BOJ - 1138

주의·2024년 1월 18일
0

boj

목록 보기
97/214

백준 문제 링크
한 줄로 서기

❓접근법

  1. 기억하는 정보를 lst에 넣는다.
  2. N 개의 0을 담은 리스트 arr을 만든다. (구하고자 하는 순서 리스트)
  3. 2개의 for문으로 arr을 채울건데, 조건은 다음과 같다.
  • for i in range(1, N-1):
    cnt = lst[i-1] # 현재 사람이 기억하는 정보
    • for j in range(N): # arr을 살펴볼거임
      • if cnt == 0 and arr[j] == 0: arr[j] = i
        cnt가 0이고 arr[j]가 0이면
        arr[j]에 그 사람을 넣는다.
      • elif arr[j] == 0: cnt -= 1
        만약 이 사람의 왼쪽에 더 큰 사람이 있다면 cnt -= 1
  1. 위 과정을 반복하면
    arr = [0, 0, 1, 0]
    arr = [0, 2, 1, 0]
    arr = [0, 2, 1, 3]
    arr = [4, 2, 1, 3]이 된다.

👌🏻코드

N = int(input())

lst = list(map(int, input().split()))

arr = [0] * N

for i in range(1, N+1):
    cnt = lst[i-1]
    
    for j in range(N):
        
        if cnt == 0 and arr[j] == 0:
            arr[j] = i
            break
        elif arr[j] == 0:
            cnt -= 1
            
    print(arr)
            
            
print(* arr)

0개의 댓글