Question
문제링크
Silver 4
Logic
기본 구조 : dictionary
1. 오름차순으로 정렬하되, 같은 수에 대해서는 먼저 있던 수가 먼저 출력되어야 한다.
2. 주어진 수열 data를 오름차순으로 정렬한 값과, 인덱스 수열을 하나씩 접근한다.
ex)
| 4 | 1 | 6 | 1 | 3 | 6 | 1 | 4 | |
|---|---|---|---|---|---|---|---|---|
| 정렬된 값 | 1 | 1 | 1 | 3 | 4 | 4 | 6 | 6 |
| 인덱스 수열 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| key | value |
|---|---|
| 1 | [0,1,2] |
| 3 | [3] |
| 4 | [4,5] |
| 6 | [6,7] |
| 4 | 1 | 6 | 1 | 3 | 6 | 1 | 4 | |
|---|---|---|---|---|---|---|---|---|
| 접근 value | [4,5] | [0,1,2] | [6,7] | [1,2] | [3] | [7] | [2] | [5] |
| 출력 | 4 | 0 | 6 | 1 | 3 | 7 | 2 | 5 |
Code
from sys import stdin
N = int(stdin.readline())
data = list(map(int,stdin.readline().split()))
dic = {}
for key, num in zip([i for i in range(N)],sorted(data)):
if num not in dic.keys():
dic[num] = [key]
else : dic[num].append(key)
for k in data: print(dic[k].pop(0),end=' ')