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=' ')