[프로그래머스] 나머지 한 점

직사각형을 만드는데 필요한 4개의 점 중 3개만 주어질 때, 주어지는 3개의 점들은 모두 각 x축 y축에 평행 하도록 하는 좌표만 주므로, 만약 [[1,4],[3,4],[3,10]] 이 주어졌을 때 중복 되는 배열의 원소 수는 소거한다. 그럼 중복 되지 않는 수가 나머지 한 점 이 된다.

그러므로 [1,10] 이 output으로 나와야 한다.

주어진 2차원 배열을 비정방형 행렬로 생각하여 풀어보자.

1
2
3
4
                     x좌표    y좌표
v = [[1, 4] [0][0] [0][1]
[3, 4] == [1][0] [1][1]
[3,10]] [2][0] [2][1]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
public int[] solution(int[][] v) {

int x, y;

// x좌표값 찾기
if (v[0][0]==v[1][0]){
x = v[2][0];
}
else if (v[0][0]==v[2][0]){
x = v[1][0];
}
else
x = v[0][0];

//y좌표값 찾기
if(v[0][1] == v[1][1]){
y = v[2][1];
}
else if(v[0][1]==v[2][1]){
y = v[1][1];
}
else
y = v[0][1];

int[] answer = {x,y};
return answer;
}
}

XOR 연산자 사용하여 문제해결

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int[] solution(int[][] v) {

int[] answer = {0,0};

//좌표는 총 3개가 입력으로 주어지므로 반복을 3번 돌린다.
for (int i=0; i<3; i++){
answer[0] ^= v[i][0];
answer[1] ^= v[i][1];
}
return answer;
}
}
Author

MoonDoni

Posted on

2020-01-22

Updated on

2020-02-07

Licensed under

댓글