[알고리즘] 개구리 길 건너게 하기. 나뭇잎 길 완성되는 최소 시간 구하기. Counting Elements
https://codility.com/media/train/2-CountingElements.pdf
- FrogRiverOne Find the earliest time when a frog can jump to the other side of a river.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
# 개구리가 강을 건넌다.
# position 0 -> position X+1
# 나뭇잎이 강에 떨어져있다.
# 배열 A: N개의 정수: 떨어진 나뭇잎들.
# A[K]: K초에 떨어진 나뭇잎 1개
# 매 초마다 1개 떨어지나보네.
# Goal: 가장 빠른 시간 찾기. 개구리가 강을 건널 수 있는 시간.
# 개구리는 모든 1~X까지 나뭇잎이 전부 있어야 건널 수 있음.
# A[0] = 1
# A[1] = 3
# A[2] = 1
# A[3] = 4
# A[4] = 2
# A[5] = 3
# A[6] = 5
# A[7] = 4
# 개구리가 끝까지 강을 못 건너면 -1을 반환
# 위 예에선 6초에 모든 1~X까지 길이 있으므로 건널 수 있음.
# set을 만들고 싶다. 그 다음 1~X까지 값이 전부 있는지 보면, 건너는지 못 건너는지 보임.
# 못건널거라면 -1 리턴.
# 건널 수 있다면, 언제 건너는 지 검사하자.
# 초를 세면서, 나뭇잎이 떨어지면 하나씩 set에서 빼면 됨.
# set이 비면 끝남. 해당 초 리턴.
def solution(X, A):
positions:set = set(A)
# print(positions)
# 1~X 값으로만 set이 이루어졌으므로 숫자를 세서 일치하면 전부 있는거다.
if not len(positions)==X:
# 없어
return -1
# 언제 빨리 건널 수 있나.
for t in range(len(A)):
# print("t", t)
if A[t] in positions:
positions.remove(A[t])
# print("removed", A[t])
if not positions:
return t
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.