[백준-1138] 한 줄로 서기
문제
코드
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의 앞부터 비어있는지 확인하면서 넣어주면 된다.
문제를 이해한 시간에 비해 코드가 너무 쉽게 짜여서 얼떨떨하답
Author And Source
이 문제에 관하여([백준-1138] 한 줄로 서기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@malgam/백준-1138-한-줄로-서기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)