티스토리 뷰
728x90
https://www.acmicpc.net/problem/1138
- 해설 :
N명의 사람을 키순으로 줄 세우려 한다. 각 사람의 키는 1, 2, 3, 4 ··· 순으로 증가하게 주어진다.
또한, 사람들은 줄을 설 때 자기보다 키가 큰 사람이 자신의 왼쪽에 몇 명 있었는지만 기억하고 있다.
이 때, 주어진 조건으로 사람들을 줄 세우는 방법을 출력하는 문제이다.
- 풀이 :
주어지는 배열은 사람들이 자신의 왼쪽에 자기보다 큰 사람이 몇 명 있었는지 기억하는 대이터이다. 이 데이터를 인덱스와 함께 가공하여 [사람의 키,왼쪽에 있는 키 큰 사람의 수] 의 형태로 만들어주었다.
정답을 넣을 배열을 미리 만들어놓은 후 이 배열의 0번째 인덱스부터 어떤 사람이 이 자리에 들어갈 수 있는지 비교하며 삽입해준다.
- 소스코드 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | people = int(input()) x = input() tall = x.split() new_tall = [] for i in range(len(tall)): new_tall.append((i+1,int(tall[i]))) solve = [0 for i in range(people)] cnt = 0 for i in range(len(new_tall)): for j in range(people): if solve[j] == 0: if cnt == new_tall[i][1]: solve[j] = i + 1 cnt = 0 break cnt += 1 for i in(solve): print(i,end=' ') | cs |
320x100
'Algorithm > Implementation' 카테고리의 다른 글
(Python) - BOJ(1620번) : 나는야 포켓몬 마스터 이다솜 (0) | 2022.01.27 |
---|---|
(Python) - BOJ(1343번) : 폴리오미노 (0) | 2022.01.26 |
(Python) - BOJ(1043번) : 거짓말 (0) | 2022.01.25 |
(Python) - BOJ(1026번) : 보물 (0) | 2022.01.24 |
(Python) - BOJ(1018번) : 체스판 다시 칠하기 (0) | 2022.01.24 |
댓글
© 2022 WonSeok, All rights reserved