백준|18870번|좌표 압축

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
42/136

문제설명
배열을 입력받고 각 숫자가 해당 배열에서 몇번째로 큰 수인지 출력하는 문제입니다.

작동 순서
1. 배열의 길이를 입력받습니다.
2. 배열을 입력받습니다.
3. 세트를 사용해서 배열의 중복값을 제거하고 정렬합니다.
4. 정렬된 세트에 들어있는 숫자와 그 숫자의 순서를 딕셔너리에 저장합니다.
5. 각 숫자들의 순서를 출력합니다.

소스코드

import sys
arr={}
n = int(sys.stdin.readline())
num = list(map(int, sys.stdin.readline()[0:-1].split(" ")))
deduplication = sorted(set(num))
for i in range(len(deduplication)):
    arr[deduplication[i]] = i
for i in num:
    print(arr[i], end=" ")

후기
처음에는 세트나 리스트로 풀어보려했지만 시간초과로 실패를 했었고 딕셔너리를 이용해야한다는 것을 보고나서는 쉽게 풀어냈습니다. 자료구조 공부의 중요성을 느끼게 된 것 같습니다.

profile
INTP 개발자 지망생

0개의 댓글