문제
1138번: 한 줄로 서기
첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다
www.acmicpc.net
입력
- 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 크거나 같고, N-i보다 작거나 같다. i는 0부터 시작한다.
출력
- 첫째 줄에 줄을 선 순서대로 키를 출력한다.
입력 예제
4
2 1 1 0
5
0 0 0 0 0
출력 예제
4 2 1 3
1 2 3 4 5
문제 풀이
- 이중 for문을 돌리면서, array[i]와 cnt 가 같고, 결과를 담을 리스트의 값이 0인 경우 리스트에 값을 넣는다.
- cnt와 array[i]가 같지 않고, 리스트의 값이 0인 경우(리스트 값이 0인 경우, 현재보다 더 큰 수의 자리), 그 자리가 아니므로(왼 쪽에 큰 수가 더 있어야 함) 카운트 한 후, 다음 탐색을 진행한다.
- 이 방식으로 result를 모두 채운 후, result의 모든 값을 출력한다.
코드
n = int(input())
result = [0] * n
array = list(map(int,input().split()))
for i in range(len(array)):
cnt = 0
for j in range(len(array)):
if cnt == array[i] and result[j] == 0:
result[j] = i + 1
break
elif result[j] == 0:
cnt += 1
print(*result)'Algorithm > Greedy' 카테고리의 다른 글
| [Python] 백준 9082번 지뢰찾기 (12) | 2024.10.17 |
|---|---|
| [Python] 프로그래머스 구명보트 (1) | 2024.07.16 |
| [Python] SWEA 1860번 진기의 최고급 붕어빵 (0) | 2023.05.12 |
| [Python] 백준 16953번 A -> B (0) | 2023.03.24 |
| [Python] 백준 10610번 30 (0) | 2023.03.24 |