https://www.acmicpc.net/problem/18870
1. 내가 작성한 코드
import sys
n = int(sys.stdin.readline())
arr = list(map(int,sys.stdin.readline().split()))
num = sorted(set(arr))
for i in arr:
print(num.index(i), end=' ')
set 함수를 이용해 arr의 중복을 제거한 후, 인덱스 값을 출력하는 형태로 풀이를 진행했다.
그러나 index()로 인해 시간복잡도가 증가되어 시간 초과가 발생하는 상황😥😥
딕셔너리를 이용하는 방법으로 수정했다.
2. 수정 후 코드
import sys
n = int(sys.stdin.readline())
arr = list(map(int,sys.stdin.readline().split()))
num = sorted(set(arr))
dic = {num[i]:i for i in range(len(num))}
for i in arr:
print(dic[i], end=' ')
index를 하나하나 조회할 필요 없이 key값으로 value를 찾을 수 있어 시간을 절약할 수 있다.
딕셔너리 활용하기✨
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 1920번 수 찾기(with python) (1) | 2023.01.26 |
---|---|
[백준] 25501번 재귀의 귀재(with python) (0) | 2023.01.25 |
[백준] 7568번 덩치(with python) (1) | 2023.01.22 |
[백준] 2292번 벌집(with python) (0) | 2023.01.22 |
[백준] 2798번 블랙잭(with python) (0) | 2023.01.21 |
댓글