문제를 보자마자 각 자릿수마다 절대값을 계산해서 비교해야 겠다는 생각부터 들었다. 하지만 어떤식으로 반복문을 돌려서 각 절대값을 비교할가에서 막혔다. 결국 검색을 해 보았고 간단한 규칙에 의해 문제를 푸는 방식이 있었다...가장 난이도가 낮은 문제조차 풀지 못했고 이 생각이 훗날 발전 한 내 모습과 비교 할 것이다.
class Solution {
public int[] solution(int[][] v) {
int[] answer = new int[2];
for(int i=0;i<answer.length;i++)
{
if(v[0][i] == v[1][i])
{
answer[i] = v[2][i];
}else if(v[0][i] == v[2][i])
{
answer[i] = v[1][i];
}else if(v[1][i] == v[2][i])
{
answer[i] = v[0][i];
}
}
return answer;
}
}
각 숫자는 서로 대칭형 구조로 짝을 이룬다. 1번과 2번이 같다면 나머지 3번 4번째 값이 같다는 원리로 문제를 풀 수 있었다.
풀이를 보다가 비트 연산을 통해 간단하게 짤 수 있다는 걸 알았다. 우리는 비트 연산을 배웠다. 아래는 XOR 에 대한 비트연산을 나타낸다. 같으면 0 다르면 1...
A | B | A ^ B |
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
answer[0] = v[0][0]^v[1][0]^v[2][0];
answer[1] = v[0][1]^v[1][1]^v[2][1];
'알고리즘' 카테고리의 다른 글
프로그래머스 - 가장 큰 정사각형 찾기(for JAVA) (0) | 2023.03.05 |
---|---|
프로그래머스 - 피자 나눠 먹기 (1) (0) | 2023.02.08 |
[프로그래머스] 카카오 2020 인턴십 키패드 누르기 java (0) | 2021.01.02 |
[백준] 14888번 / 연산자 끼워넣기 / java (1) | 2020.10.18 |
백준 17070번 : 파이프 옮기기 1 JAVA code (0) | 2020.01.28 |