FrogRiverOne - Easy (Codility, Counting Elements)
2023. 1. 13. 18:35ㆍ코딩 테스트 준비
728x90
반응형
def solution(X, A):
sig = [0] * X
s = 0
for i in range(len(A)):
if sig[A[i]-1] == 0:
sig[A[i]-1] = 1
s += 1
if s == X:
return i
return -1
문제를 이해하는데 한참 걸린 문제다.
X에 가는데 걸리는 가장 빠른 초를 찾는 것으로 조건은 return한 초에 X까지 모든 수를 조회해야 한다는 것이다.
즉, 1 3 2 5 인데 X가 5면 -1을 리턴해야한다.
만약 주어진 X가 4고 A 배열이 2 1 2 3 3 3 4 2 라고 가정하자.
sig = [0,0,0,0]이 될테고
s=0으로 시작한다.
먼저 0번 인덱스인 2는 sig[2-1]을 1로 변경하고 s를 1 증가시킨다.
그리고 1번 인덱스인 1은 sig[1-1]을 1로 변경하고 s를 1 증가시킨다.
이 과정을 반복하면 반복되는 3은 s가 한 번만 증가하고 4에 도달했을때 s==X가 되어 4의 인덱스인 6이 반환된다.
sig가 X와 길이가 같은 이유가 이것이다.
결국에는 X의 길이만큼 모든 수가 카운팅이 되어야하고 s==X가 되지 않는다는 것은 값 중 하나가 모자라다는 뜻이다.
그리고 중복은 넘어가기에 인덱스의 위치는 증가하여 정확한 답을 리턴할 수 있다.
728x90
반응형
'코딩 테스트 준비' 카테고리의 다른 글
예산 - 실버3 (백준, 이분탐색) feat. 이분탐색 (0) | 2023.01.13 |
---|---|
영역 구하기 - 실버 1 (백준, bfs) (0) | 2023.01.13 |
PermCheck - Easy (Codility, Counting Elements) (0) | 2023.01.13 |
스위치 켜고 끄기 - 실버 4 (백준, 구현) (0) | 2023.01.13 |
기상캐스터 - 실버5 (백준, 구현) (0) | 2023.01.13 |