[백준] 1138 한 줄로 서기

cheeeese·2023년 7월 2일
0

코딩테스트 연습

목록 보기
150/151
post-thumbnail

📖 문제

https://www.acmicpc.net/problem/1138

💻 내 코드

import sys

N = int(sys.stdin.readline().strip())
line = list(map(int, sys.stdin.readline().split()))

res = [0]*N

# 키가 작은 사람부터 배치 시작
# 왼쪽에 있는 0의 개수가 자신보다 큰 사람의 수가 된다

for i in range(N):
    cnt = 0 # 0의 개수

    for j in range(N):

        if res[j]==0 and cnt==line[i]: 
        # 0이고 왼쪽의 0의 개수가 큰 사람의 수와 같다면
            res[j]=i+1 # 배치
            break
        elif res[j]==0:
            cnt+=1

print(*res)

💡 풀이

  • 작은 수부터 배치를 시작해준다
  • 0의 개수로 큰 사람의 수를 판단할 수 있다
  • 작은 수부터 배치를 시작했기 때문에 0은 아직 배치되지 않은 큰 사람이 들어가게 될 위치가 된다
  • 왼쪽에 있는 0의 개수가 자신보다 큰 사람의 수와 같음을 알 수 있음

0개의 댓글