본문으로 바로가기

문제를 보자마자 각 자릿수마다 절대값을 계산해서 비교해야 겠다는 생각부터 들었다. 하지만 어떤식으로 반복문을 돌려서 각 절대값을 비교할가에서 막혔다. 결국 검색을 해 보았고 간단한 규칙에 의해 문제를 푸는 방식이 있었다...가장 난이도가 낮은 문제조차 풀지 못했고 이 생각이 훗날 발전 한 내 모습과 비교 할 것이다.

 

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 A ^ B
0
        answer[0] = v[0][0]^v[1][0]^v[2][0];
        answer[1] = v[0][1]^v[1][1]^v[2][1];