2017/08/25 18:01

OddOccurrencesInArray Dev

오늘은 두 번째 Codility 문제에 도전하였다.

중국쪽 회사에 개발환경 테스트 관련 영어메일을 보내느라 멘붕이었지만.. 어쨌든 도전..


문제는 이렇다.

입력된 배열의 값 중에 중복되지 않는 값을 찾아내는 것.


예를 들어

[9, 3, 9, 3, 9, 7, 9] 라는 값이 입력되면

짝꿍이 없는 7을 정답으로 제출하면 된다.


나의 계획은

입력된 값을 비교하여 같으면 0으로 변환하고, 혼자 남는 값을 남겨서 출력해보자.


코드

 


결과는

 


여기까진 좋았으나..

결과를 제출하자 예상치 못한 오류를 만났다.


 


숫자가 커지자 time out 에러가 발생...


내 두뇌의 한계는 여기까지였기 때문에, 고수들의 도움을 요청하였다.

그 결과 XOR 연산을 이용해서 풀어내는 방법을 알게 되었다.

XOR 연산은 비트연산으로, 이진수로 비교하여 숫자가 같으면 0을, 다르면 1을 전달한다.


결국, 같은 값을 XOR연산 처리하면 0을 리턴하고, 다른 값만 남게된다는 것.


개념은 같지만 성능은 월등한 차이를 나타낸다.



그래서 다시 짠 코드

 


결과는

 


끝.


오늘의 교훈 : 이래서 기본기가 중요하다.



덧글

댓글 입력 영역


skin by mater