https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
import sys
n = int(sys.stdin.readline())
num = list(map(int,sys.stdin.readline().split()))
num_list=list(set(num))
num_list.sort()
dic_list = {}
for i in range(len(num_list)):
dic_list[num_list[i]] = i
for j in num:
print(dic_list[j], end=" ")
파이썬의 단점이 아주 아주 많이 들어난 문제이다..
시간 초과 때문에 한 1시간은 고민한듯 하다
딕셔너리의 사용을 자주 하지 않아서 어색한 느낌이 있어 이해하는 것에 시간을 많이 투자 했다.
dict를 사용할 때
dict는 key 값과 value 값이 사용된다.
또한 딕셔너리 쌍을 추가하는 방법은
a= {1 : 'a'}
a[2] = "b"
이런 식으로 하면
a 는 {1:'a' , 2: 'b'} 이렇게 그냥 추가된다.
그리고 중간에 for 문을 넣을 때
위의 방법 말고도
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
arr2 = sorted(list(set(arr)))
dic = {arr2[i] : i for i in range(len(arr2))}
for i in arr:
print(dic[i], end = ' ')
위의 방법처럼 for 문을 넣는 방법도 있으니 참고해두자 함수 내의 for 문을 활용해보는 것도 좋은 경험이 될것이다.
언어에서 c 언어 학습을 조금씩 늘려야 겠다.
반응형
'알고리즘 공부 > 기타' 카테고리의 다른 글
[백준] 1037번 약수- 파이썬 (0) | 2021.08.14 |
---|---|
[백준] 5086번 배수와 약수- 파이썬 (0) | 2021.08.14 |
[백준] 10814번 나이순 정렬 - 파이썬 (0) | 2021.05.22 |
[백준] 11650번 좌표 정렬하기 - 파이썬 (0) | 2021.05.21 |
[백준] 1181번 단어 정렬 - 파이썬 (0) | 2021.05.21 |