본문 바로가기

코딩/백준 (단계별)

백준 18870 파이썬 딕셔너리

반응형

백준 18870 - 좌표 압축

문제

https://www.acmicpc.net/problem/18870

 

18870번: 좌표 압축

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에

www.acmicpc.net

 

18870번

답안 코드 :

import sys

input = sys.stdin.readline

n = int(input())
arr = list(map(int, input().split()))

sorted_arr = sorted(list(set(arr)))  # 중복 제거 및 정렬


dic = {sorted_arr[i]: i for i in range(len(sorted_arr))}



for i in arr:
    print(dic[i], end=" ")

 

백준 / 문제 / 단계별로 풀어보기 / 13단계 정렬

 

생각 :

# dic = {sorted_arr[i]: i for i in range(len(sorted_arr))}
# 딕셔너리 dic를 생성합니다. 이 딕셔너리는 좌표를 압축하기 위해 사용됩니다.
# 딕셔너리의 키는 정렬된 좌표이고, 값은 해당 좌표의 압축된 인덱스입니다.

# 입력
# 5
# 2 4 -10 4 -9

# 출력
print(sorted_arr)   # [-10, -9, 2, 4]
print(dic)          # {-10: 0, -9: 1, 2: 2, 4: 3}

for i in arr:
    print(dic[i], end=" ")     # 2 3 0 3 1
 
반응형

'코딩 > 백준 (단계별)' 카테고리의 다른 글

백준 14425 파이썬  (1) 2024.04.15
백준 10815 파이썬  (3) 2024.04.14
백준 10814 파이썬 런타임에러 해결  (16) 2024.04.12
백준 1181 파이썬 .strip()와 lambda  (10) 2024.04.11
백준 11651 파이썬  (13) 2024.04.10