728x90
[백준] 18870번 Python 파이썬
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
# 시간 초과
시간 초과와 런타임 오류가 정말 많이 난 문제였다.
시간 초과가 난 코드는 입력받은 숫자들의 인덱스를 찾아 출력하도록 하였다.
인덱스를 찾아서 출력을 하기 때문에 입력이 많을 경우 시간이 오래걸린다.
# 시간 초과 코드
n = int(input())
num = list(map(int, input().split()))
s_num = sorted(num)
for i in num:
print(s_num.index(i), end = ' ')
# 수정 코드
dict 자료형을 이용하여 index를 담아주었다.
오름차순 정렬을 할 때 꼭 set() 함수를 이용하여 중복되는 수를 제거해 주어야 한다.
출력은 한 줄로 해준다.
# 정답 처리된 코드
import sys
n = int(sys.stdin.readline())
num = list(map(int, sys.stdin.readline().split()))
s_num = sorted(set(num)) # 중복되는 수를 set()함수를 이용하여 제거한다.
num_dict = {val: index for index, val in enumerate(s_num)} # enumerate() 함수를 이용하여 s_num 리스트의 인덱스와 원소를 각각 할당해준다.
for i in num:
print(num_dict[i], end = ' ')
혼자 공부하며 올리는 블로그입니다. 틀린 내용은 댓글 남겨주시면 감사하겠습니다.
728x90
'BAEKJOON (Python) > 단계별' 카테고리의 다른 글
BAEKJOON_27323 "직사각형" PYTHON (0) | 2023.03.22 |
---|---|
BAEKJOON_2798 "블랙잭" PYTHON (0) | 2023.03.21 |
BAEKJOON_10814 "나이순 정렬" PYTHON (0) | 2023.03.20 |
BAEKJOON_1181 "단어 정렬" PYTHON (0) | 2023.03.18 |
BAEKJOON_11651 "좌표 정렬하기 2" PYTHON (0) | 2023.03.16 |