접근
좌표를 압축한 결과는 그 값보다 작은 '서로 다른 좌표의 개수'와 같다.
따라서 입력받은 좌표들을 set으로 바꾸어 중복을 제거해주고 정렬해주면 해당 좌표가 몇번째로 작은 좌표인지, 즉 해당 좌표보다 작은 좌표가 몇개인지를 확인할 수 있다. 인덱스를 딕셔너리 형태로 저장해주고, 각 좌표에 따라 불러옴으로써 문제를 해결할 수 있다.
코드
import sys
n = int(sys.stdin.readline())
points = list(map(int, sys.stdin.readline().split()))
points2 = list(sorted(set(points)))
dic = {points2[i]: i for i in range(len(points2))}
print(*[dic[i] for i in points])
더 생각해 볼 것?
...
코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!
반응형
'코딩 > 백준 (Python)' 카테고리의 다른 글
백준 14003번: 가장 긴 증가하는 부분 수열 5 (Python) (0) | 2021.04.25 |
---|---|
백준 14002번: 가장 긴 증가하는 부분 수열 4 (Python) (0) | 2021.04.25 |
백준 12852번: 1로 만들기 2 (Python) (0) | 2021.04.25 |
백준 1450번: 냅색문제 (Python) (0) | 2021.04.24 |
백준 1644번: 소수의 연속합 (Python) (0) | 2021.04.24 |
최근댓글