[해커랭크] Lonely Integer

Kim Yuhyeon·2023년 10월 19일
0

알고리즘 + 자료구조

목록 보기
145/161

문제

https://www.hackerrank.com/challenges/one-week-preparation-kit-lonely-integer/problem?isFullScreen=true&h_l=interview&playlist_slugs%5B%5D=preparation-kits&playlist_slugs%5B%5D=one-week-preparation-kit&playlist_slugs%5B%5D=one-week-day-two

접근 방법

나의 풀이

n개의 배열을 정해놓고 벡터를 돌면서 각 인덱스의 개수를 더해주었다. 이후 n만큼 돌면서 1개만 있으면 return 했다.

출제자의 풀이

XOR 비트연산을 이용한다.
같은 수가 2번씩 나온다고 명시되어 있으므로,
같은수 ^ 같은수 = 0 이 나오는 XOR을 이용해서
1개만 나오는 수를 구한다.
벡터를 돌면서 각 수를 XOR 연산해주면 결국 1개만 나오는 수만 남게 된다.

풀이

나의 풀이

int arr[105];

int lonelyinteger(vector<int> a) {
    
    for(int i : a) arr[i]++;
    
    for(int i=0; i<=100; i++)
    {
        if (arr[i] == 1) return i; 
    }
    
    return 0;
}

출제자의 풀이

int lonelyinteger(vector<int> a) {
    
    int answer = 0;
    
    for(int i : a) 
    {
        answer = answer ^ i;
    }
    
    return answer;
}

정리

비트연산을 이용하니 훨씬 간편해졌다..!!!

0개의 댓글