군대에서 코딩공부 하기
문제 설명
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
제한사항
dots의 길이 = 4
dots의 원소의 길이 = 2
-256 < dots[i] 의 원소 < 256잘못된 입력은 주어지지 않습니다.
입출력 예
dots result
[[1, 1], [2, 1], [2, 2], [1, 2]] 1 ]
[[-1, -1], [1, 1], [1, -1], [-1, 1]] 4 ]
입출력 예 설명
입출력 예 #1
좌표 [[1, 1], [2, 1], [2, 2], [1, 2]] 를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 1, 1이므로 직사각형의 넓이는 1 x 1 = 1입니다.
입출력 예 #2
좌표 [[-1, -1], [1, 1], [1, -1], [-1, 1]]를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 2, 2이므로 직사각형의 넓이는 2 x 2 = 4입니다.
[소스 코드]
#include <stdio.h>
int solution(int** dots, size_t dots_rows, size_t dots_cols) {
int answer=0,a,b;
//a는 가로의 길이 b는 세로의 길이
for(int i=0;i<dots_rows;i++){
for(int j=i;j<dots_rows;j++){
if(dots[i][0]==dots[j][0]&&i!=j){
b=(dots[i][1]-dots[j][1]);
if(b<0){
b*=-1; //길이는 항상 양수로
}}
if(dots[i][0]!=dots[j][0]){
a=(dots[i][0]-dots[j][0]);
if(a<0){
a*=-1; //길이는 항상 양수로
}}}}
answer=a*b;
return answer;
}
직사각형을 만드려면 일단
좌표 두개 ex)[x1,y1][x3,y3]->[1,1][2,2]가 찍혔다고 생각해보자. 그러면 무조건 남은 좌표는 [1,2][2,1]가
될수 밖에 없다. 즉 두개씩 x좌표 값이 같고 y값도 같다는 소리다. 반복문으로 돌려서 같은값일때 세로b를 구해주고
다른값일때 가로 a를 구해 곱하는 형식으로 풀었다.
'프로그래머스' 카테고리의 다른 글
C언어[프로그래머스 레벨0]외계어 사전 (0) | 2022.11.11 |
---|---|
[C언어/프로그래머스 레벨-1]-2016년 (0) | 2022.11.08 |
[C언어/프로그래머스 레벨0]-소인수 분해 (0) | 2022.11.03 |
[C언어/프로그래머스 레벨0]-최댓값 만들기(2) (0) | 2022.11.02 |
[C언어/프로그래머스 레벨 0]-369게임 (0) | 2022.10.30 |