문제 출처 : www.acmicpc.net/problem/18870
문제 해석 : 좌표를 새롭게 부여하는 문제이다. 즉 자신이 몇번째 순서인지로 수를 바꾸는 것이다. 이때 중복되는 수가 있을 경우 같은 수를 가진다.
문제 풀이 : 중복을 제거하고 정렬한 다음 딕셔너리로 만들어서 해당 숫자를 매핑 해주면 된다. 따라서 파이썬에서 제공하는 set() 과 sorted(), dictionary 자료형을 활용하면 풀 수 있다.
풀이 코드
import sys
input = sys.stdin.readline
N = int(input())
arr = list(map(int, input().split()))
arr2 = list(sorted(set(arr)))
dic = {value: index for index, value in enumerate(arr2)}
for element in arr:
print(dic[element], end= " ")
author : donghak park
contact : donghark03@naver.com
## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 1043 거짓말 문제 풀이 (0) | 2021.01.17 |
---|---|
[알고리즘][Python] 백준 1149 RGB 거리 문제 풀이 (0) | 2021.01.17 |
[알고리즘][Python] 백준 17626 Four Squares 문제 풀이 (0) | 2021.01.15 |
[알고리즘][Python] 백준 17219 비밀번호 찾기 문제 풀이 (3) | 2021.01.15 |
[알고리즘][Python] 백준 11727 2xN 타일링 2 문제 풀이 (0) | 2021.01.15 |