[BaekJoon] 백준 18870번 좌표 압축
문제: https://www.acmicpc.net/problem/18870
내코드
처음 문제를 풀었을 때 시간초과가 났다. 이유가 뭘지 고민하다가 검색해보니까 다른 사람도 나와 같이 풀어서 시간 초과가 난 경우가 많았다.(역시 사람 생각하는건 다 똑같..) 문제는 index 메서드였다. index 메서드는 O(N)의 시간 복잡도를 가지기 때문에 for문 안에서 N*N이 되어 시간이 오래 걸리는 거였다.
# 틀린 코드
# BaekJoon18870.py
N = int(input())
arr = list(map(int, input().split()))
sorted_arr = sorted(list(set(arr)))
for i in range(N):
arr[i] = str(sorted_arr.index(arr[i]))
print(" ".join(arr))
해결 방법은 dic를 이용하는 것이었다.
# BaekJoon18870.py
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 = " ")
참고
728x90
반응형
'CS > Algorithm 문제' 카테고리의 다른 글
[BaekJoon] 백준 20444번 색종이와 가위 (0) | 2021.08.06 |
---|---|
[BaekJoon] 백준 1182번 부분수열의 합 (0) | 2021.08.06 |
[BaekJoon] 백준 2630번 색종이 만들기 (0) | 2021.07.31 |
[BaekJoon] 백준 1620번 나는야 포켓몬 마스터 이다솜 (0) | 2021.07.31 |
[BaekJoon] 백준 1074번 Z (Python) (0) | 2021.07.31 |