-
[python] Codility Lesson 2-2. OddOccurrencesInArray공부/알고리즘 2021. 7. 23. 21:57
1. 문제 잘못읽어 5시간 날린 코드
odd 넘버의 갯수가 하나인줄 알고 5시간 끙끙 앓다가 열받아서 테스트 케이스 print한뒤 기절할뻔했다. odd 넘버의 갯수가 하나가 아니였다...
def solution(A): # write your code in Python 3.6 A.sort() print(A) if len(A) == 1: return A[0] for i in range(len(A)): if i == len(A)-3: return A[-1] #y if A[i] == A[i+1]: #y continue else: if A[i+1] == A[i+2]: if i == 0: return A[0] continue else: return A[i+1]
2. 수정한 정답 코드
def solution(A): # write your code in Python 3.6 A.sort() if len(A) == 1: return A[0] for i in range(0, len(A), 2): if i == len(A)-1: return A[i] if A[i] == A[i+1]: continue else: return A[i]
1. sort 메서드를 통해 정렬,
2. list의 크기까지 2씩 index 증가
3. A[index] 와 A[index+1] 비교로 odd넘버 detect
4. 예외상황 (크기가 1인 리스트, 마지막에 odd number 오는경우 고려...)
3. 뭔가 아쉽기도하고, 남들은 어떻게 풀었나 확인해보았다.
(출처 : https://wayhome25.github.io/algorithm/2017/04/30/OddOccurrencesInArray/)
def solution(A): return reduce(lambda x,y: x^y, A)
이 문제에서 ^ 연산자를 사용한다는 생각하는게 너무 참신하고 신기하다 ㅠㅠ
XOR -> 같을 때 0, 다를 때 1
(출처 : https://hwan-shell.tistory.com/23)
int solution(int A[], int N) { int i, result = 0; for(i = 0; i < N; i++) result ^= A[i]; return result; }
위와 마찬가지로 key_point ^ 연산자로 구현한 코드이다.
728x90'공부 > 알고리즘' 카테고리의 다른 글
[python] Codility Lesson 3-2. PermMissingElem (0) 2021.07.24 [python] Codility Lesson 3-1. FrogJmp (0) 2021.07.24 [python] Codility Lesson 2-1. CyclicRotation (0) 2021.07.23 [python] Codility Lesson 1-1. BinaryGap (0) 2021.07.22 회문(回文, palindrome) 알고리즘 구현 by Python (0) 2021.03.08