Koala - 12기/기초 알고리즘 스터디

[백준/python] 25706번 자전거 묘기

알 수 없는 사용자 2023. 9. 17. 11:36
N = int(input())
import sys
jlist=list(map(int, sys.stdin.readline().split()))
step=[]
sum=[]
num=0
for i in range (N) :
  for j in range (i,N) :
    if j>i :
      num=num+jlist[num-1]+1
    else :
      num=num+j+1
    if num>N :
      break
    step.append(num)
  sum.append(len(step))
  step=[]
  num=0
for k in sum :
  print(k,end=" ")

[오답] 문제를 제대로 안읽었다가 만든 코드. 시간초과 걸려서 결국 처음부터 다시했다.

출발한 칸마다 밟는 칸을 계산해서 리스트에 넣고 그 리스트의 길이를 또 저장해뒀다가 한번에 출력한다.

주어진 정보와 반대로코딩했기 때문에 머리를 꽤나 썼다

 

 

N = int(input())
import sys
jump=list(map(int, sys.stdin.readline().split()))
sol=[]
sol.append(1)
for i in range (N-1,0,-1) :
    if N>i+jump[i-1] :
        g=sol[N-i-jump[i-1]-1]
        sol.append(g+1)
    else :
        sol.append(1)
sol.reverse()
for k in sol :
     print(k,end=" ")

.

[정답]  N번째 칸의 답은 1이라는 것을 이용했다.

점프대의 특성을 이용해서 점프한 칸의 숫자를 가져오는데, 그 값이 N을 넘길경우는 1로 저장하는 방식이다.