https://www.acmicpc.net/problem/18870
풀이
import sys
input =sys.stdin.readline
n = int(input())
arr = list(map(int,input().split()))
s = list(sorted(set(arr)))
dic={value:index for index,value in enumerate(s)}
for i in arr:
print(dic[i],end=" ")
1. n개의 숫자를 입력받아 리스트로 만들어준다.
2. 리스트에서 중복된 것을 없애주기 위해서 집합으로 만들어주고 정렬해준다. 그 다음 다시 리스트로 만들어준다.
3. 중복을 제거한 리스트를 enumerate로 인덱스와 값을 구하고 딕셔너리로 만들어준다. 딕셔너리의 key가 s의 값이 되고 value가 그 값의 순서가 된다.
4. arr의 값을 딕셔너리에 조회한다. dic[i]를 하면 그 값의 순서가 나온다.
나는 딕셔너리를 만들지 않고 s.index(i)를 사용하여 위치를 구하였다. 그래서 계속 시간초과가 나왔다!!ㅠㅠ
결국 인터넷 행.. 딕셔너리로 만들어서 구하니 시간초과가 안난다.. index가 느린건 알고있었지만.. 휴 ㅠ 딕셔너리로 만드는거 기억하자,,
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #10799 - 쇠막대기 (0) | 2021.12.01 |
---|---|
[Python] 백준 #15649 - N과 M (1) (4) | 2021.11.30 |
[Python] 백준 #2108 - 통계학 (1) | 2021.11.26 |
[Python] 백준 #1181 - 단어정렬 (1) | 2021.11.25 |
[Python] 백준 #1427 - 소드인사이드 (0) | 2021.11.23 |