티스토리 뷰

문제 링크


문제를 요약하자면, 직사각형을 그리고 있는 꼭지점의 좌표 3개를 받으면, 나머지 꼭지점의 위치 하나를 출력하는 것이다.


코드


import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
//총 몇개의 숫자를 입력 받을 것인지
int count = 0;
int resultx = 0;
int resulty = 0;
int[] xy = new int[6];

count = sc.nextInt();
if(count > 0) {
for(int i = 0 ; i < count ; i ++) {

//띄어쓰기 기준으로 입력을 받습니다. 범위를 넘을 경우 함수를 종료시킵니다.
for(int j = 0; j < 3 ; j++) {
xy[2*j] = sc.nextInt();
xy[2*j+1] = sc.nextInt();
if(xy[2*j] > 1000 || xy[2*j+1] > 1000) return;
}

//꼭지점을 찾는 알고리즘
for (int k = 0 ; k < 3 ; k++) {
if( (xy[2*k] == xy[(2*(k+1))%6] || xy[2*k] == xy[(2*(k+2))%6])
&& (xy[2*k +1] == xy[(2*(k+1) +1)%6] || xy[2*k +1] == xy[(2*(k+2) +1)%6]) ) {
resultx = xy[(2*(k+1))%6] + xy[(2*(k+2))%6] - xy[2*k];
resulty = xy[(2*(k+1) +1)%6] + xy[(2*(k+2) +1)%6] - xy[2*k +1];
break;
}
if( k == 2) return;
}
System.out.println(resultx+" "+resulty);
}
}
sc.close();
}
}

먼저 입력을 받은 뒤, 공간을 낭비하지 않기 위해 6칸의 int 배열을 만들고,

찾을 꼭지점의 대각선 점을 찾는 것이다.

여기에서 메인 아이디어라고 볼 수 있는 것은

대각선 점을 찾을 때 식의 복잡도를 완화하기 위해

Round Queue의 원리를 활용한 것이다(나머지 연산자를 활용)


'알고리즘 문제 풀이 ' 카테고리의 다른 글

달팽이 그리기  (0) 2018.09.17
자연수의 합 / Division  (0) 2018.09.17
단지번호 붙이기  (0) 2018.09.17
백준 스택 수열 1874번  (0) 2018.07.03
weird  (0) 2018.07.01
XHAENEUNG - 똥 같은 코드  (0) 2018.01.29
Endians - n진법 표기 관련 문제  (0) 2018.01.25
algospot 문제 잘 풀기 시작  (0) 2018.01.25
댓글