백준 / 수열 정렬 / 1015

박성완·2022년 4월 1일
0

백준

목록 보기
52/78
post-thumbnail

Question

문제링크
Silver 4

Logic

기본 구조 : dictionary
1. 오름차순으로 정렬하되, 같은 수에 대해서는 먼저 있던 수가 먼저 출력되어야 한다.
2. 주어진 수열 data를 오름차순으로 정렬한 값과, 인덱스 수열을 하나씩 접근한다.

ex)

41613614
정렬된 값11134466
인덱스 수열01234567
  1. 딕셔너리 구조를 이용해, 숫자별 인덱스 값을 저장한다.
    ex) (이어서)
    딕셔너리
keyvalue
1[0,1,2]
3[3]
4[4,5]
6[6,7]
  1. 이를 다시 원본 data에서 처음부터 접근하여, 각 데이터를 키로 앞에서부터 하나씩 출력한다.
    ex) (이어서 )
41613614
접근 value[4,5][0,1,2][6,7][1,2][3][7][2][5]
출력40613725

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

0개의 댓글