반응형
https://www.acmicpc.net/problem/1138
1138번: 한 줄로 서기
첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다
www.acmicpc.net
해결 방법 : 구현
- 문제 조건상, 주어진 arr의 인덱스가 키의 순서이므로, 앞으로 나올 사람의 키는 항상 현재 보다 큰 점을 이용하면 쉽게 해결 가능하다.
- 자신 보다 큰 사람이 n명이어야 한다면, 현재 차례에서 빈 공간을 n개 만들고 다음 빈공간에 위치하면 된다!
import sys
input = sys.stdin.readline
def solution(N, arr):
answer = [None] * N
for i, n in enumerate(arr):
cnt = idx = 0
while True:
if answer[idx] == None: # 빈 공간
if cnt == n: # 지나온 None의 개수가 n인 경우, 현재 공간에 삽입
break
cnt += 1 # 빈 공간++
idx += 1
answer[idx] = str(i + 1)
return ' '.join(answer)
if __name__ == '__main__':
N = int(input())
arr = list(map(int, input().split()))
result = solution(N, arr)
print(result)
반응형
'IT study > 알고리즘 문제 풀이' 카테고리의 다른 글
백준 9204 : 체스 (0) | 2021.08.07 |
---|---|
백준 2606 : 바이러스 (0) | 2021.08.07 |
백준 1058 : 친구 (0) | 2021.08.03 |
백준 1005 : ACM Craft (0) | 2021.07.31 |
백준 1135 : 뉴스 전하기 (0) | 2021.07.30 |