이숭간 공부기록

[코딜리티] 파이썬 _ FrogRiverOne 본문

알고리즘/코딜리티

[코딜리티] 파이썬 _ FrogRiverOne

이숭간 2021. 7. 31. 15:13
728x90

https://app.codility.com/programmers/lessons/4-counting_elements/frog_river_one/

 

FrogRiverOne coding task - Learn to Code - Codility

Find the earliest time when a frog can jump to the other side of a river.

app.codility.com

 

 

문제번역 :

개구리가 한편에서 반대로 건너가기위해서는 나뭇잎을 밟아가야함 🐸

나뭇잎이 1초에 하나씩 떨어지는데 전체가(경로전체) 나뭇잎으로 덮이는 가장 빠른 시점을 리턴하는것

 

문제풀이 :

  • 방문처리 배열을 두고 방문처리가 모두 되는 첫 시점 (cnt활용)을 리턴하도록한다.
  •  # X를 순회하면서 해당위치에 나뭇잎이 떨어졋다면 해당위치를 방문처리한다.
     # 모든 위치가 방문처리되었는지 매 라운드마다 확인하고 모두 방문되었으면 그 시간을 리턴한다.
     # 만약 배열순회가 모두 끝났는데 아직 전체가 방문처리되지 않았다면 -1을 리턴한다.

정답코드 :

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(X, A):
    # write your code in Python 3.6
    
    # X를 순회하면서 해당위치에 나뭇잎이 떨어졋다면 해당위치를 방문처리한다.
    # 모든 위치가 방문처리되었는지 매 라운드마다 확인하고 모두 방문되었으면 그 시간을 리턴한다.
    # 만약 배열순회가 모두 끝났는데 아직 전체가 방문처리되지 않았다면 -1을 리턴한다.
    visited = [False for _ in range(X+1)]

    cnt = 0
    for sec, place in enumerate(A):
        if not visited[place]:
            cnt += 1
            visited[place] = True
        if cnt == X:
            return sec
    
    if cnt < X:
        return -1