[백준-1138] 한 줄로 서기

4174 단어 구현구현

문제

링크

코드

import sys
input = sys.stdin.readline

n = int(input())

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

line = [-1] * n
# 키가 제일 작은 사람 먼저 넣어주기
# 자기보다 키가 큰 사람의 수가 키가 가장 작은 사람의 위치(인덱스)이다.
line[info[0]] = 1

# 사람 키 순서대로
for i in range(1, n) :
    count = 0
    # line의 인덱스
    for j in range(n) :
    	# 비어있지 않으면 어차피 못들어가므로 셀 필요 X
        if line[j] != -1 :
            continue
        # 비어있는 칸의 수와 자신보다 큰 사람의 수가 같을 경우 넣어주기
        if count == info[i] :
            line[j] = i+1
            break
        else :
            count += 1
print(*line)

어차피 키 순서로 값이 들어왔고, 키가 작은 사람부터 배치가 시작된다.
키가 가장 작은 1번 사람은 자신보다 키가 큰 사람의 수가 자신의 위치이므로 먼저 넣어준다.
그리고 2번부터 반복문을 통해 진행되는데, line의 앞부터 비어있는지 확인하면서 넣어주면 된다.

문제를 이해한 시간에 비해 코드가 너무 쉽게 짜여서 얼떨떨하답

좋은 웹페이지 즐겨찾기