Posts 개구리 [CosProLv2]
Post
Cancel

개구리 [CosProLv2]

URL https://programmers.co.kr/learn/courses/33/lessons/1859

문제 설명

  • 개구리가 일정한 간격으로 일렬로 놓여있는 징검다리를 건너려고 합니다.
  • 징검다리에는 자연수가 적혀있으며, 개구리는 자신이 밟고 있는 징검다리에 적혀있는 숫자만큼 앞쪽으로 점프해야 합니다. 개구리는 현재 첫 번째 징검다리 위에 앉아있습니다.
  • 징검다리에 적혀있는 숫자가 첫 번째부터 순서대로 들어있는 배열 stones가 매개변수로 주어질 때, 개구리가 징검다리를 모두 건너기 위해 필요한 점프 횟수를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.

매개변수 설명

  • 징검다리에 적힌 숫자가 첫 번째 징검다리부터 순서대로 들어있는 배열 stones가 solution 함수의 매개변수로 주어집니다.
  • stones 배열의 길이는 1 이상 100 이하입니다.
  • stones의 원소(돌에 적혀있는 숫자)는 1 이상 5 이하의 자연수입니다.

return값 설명

  • solution 함수는 개구리가 징검다리를 모두 건너기 위해 필요한 점프 횟수를 return 합니다.

빈칸 코드

  • 빈칸 채우기 문제 안내
  • 빈칸 채우기는 이미 완성된 코드 중 빈칸에 알맞은 코드를 입력하는 문제 타입입니다.
  • 빈칸을 제외한 기본 코드는 수정할 수 없습니다.
  • 빈칸을 채우지 않을 경우, 실행 결과에 에러 메시지가 표시됩니다.
1
2
3
4
5
6
7
8
def solution(stones):
    cnt = 0
    current = 0
    n = len(stones)
    while '빈칸:
        current += '빈칸'
        cnt += 1
    return cnt

문제 풀이

  • while은 상태값이 True이면 계속 실행된다.
  • current는 여태까지 뛰어온 정보 및 내가 뛰어온 위치 입니다. (current가 0이면 나는 0번쨰 위치)
  • stones[current]는 다음에 점프를 해야할 위치 힙니다.
  • current가 전체 stones의 길이보다 크다면 이제 다 건너온것이므로 끝입니다.
  • while에 전체 stones의 길이 n이 current보다 크다면 아직 건너갈 stone이 있다는 이야기입니다.
  • 요약하자면 current와 n을 비교하여 앞으로 내가 가야할 stone이 있다면 currnet(여태까지 뛰어온 위치)와 앞으로 점프해야할 위치를 더하고 cnt(건너온 횟수)를 +1를 해주면 됩니다.
1
2
3
4
5
6
7
8
def solution(stones):
    cnt = 0
    current = 0
    n = len(stones)
    while current < n:
        current += stones[current]
        cnt += 1
    return cnt
1
stones = [2,5,1,3,2,1]
1
solution(stones)
1
3
1
This post is licensed under CC BY 4.0 by the author.