안녕하세요! 오늘도 새로운 문제를 들고 왔습니다. 오늘은 생각보다 빠르게 풀었네요!
이전 코드 내용이 궁금하시다면 아래 링크로 이동하시면 됩니다!
코딜리티 이전 글 - 2020/08/05 - [데이터 분석/파이썬] - [Codility] 코딜리티 4-3. MissingInteger (Python)
1. 문제 설명
- 숫자는 무조건 한번만 나오게 되고, 중간에 빠진 숫자가 있으면 Permutation이 아니라 0으로 출력합니다. Permutation이면 1을 출력합니다.
- 예시 : A = [4, 1, 3, 2] : Permutation이므로 return 1
A = [4, 1, 3 ] : Permutaiton이 아니므로 return 0
2. 문제 풀이
-
idea : 중복여부를 확인하기 위해 set을 이용해서 새로운 Array B를 만듭니다. B의 length와 A의 length가 다르면, 중복이 있으므로 Permutation이 아닌 것을 알 수 있습니다. count를 통해서 B의 값들을 체크하면서 중간에 빠진 숫자를 찾아냅니다.
def solution(A):
B = list(set(A)) # A의 중복제거 후 리스트로 변환
if len(B) != len(A): # A의 크기 != B의 크기 (중복 포함되어 있다는 이야기)
return 0
B.sort() # B 순서대로 나열(오름차순)
count = 1
for i in B:
if count == i:
result =1
count +=1
else :
result = 0
break
return result
3. 결과 (시간복잡도 N or N*logN)