Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

행복한 개구리

백준 22.01.27. 18870번 - 좌표 압축 본문

Algorithm/BaekJoon

백준 22.01.27. 18870번 - 좌표 압축

HappyFrog 2022. 1. 27. 19:57


↓틀린코드

더보기
import sys

N = int(sys.stdin.readline())

coord = list(map(int, sys.stdin.readline().split()))

idx = sorted(list(set(coord)))

result = []
for i in range(len(coord)):
    for j in range(len(idx)):
        if coord[i] == idx[j]:
            result.append(idx.index(idx[j]))

for i in result:
    sys.stdout.write(str(i) + " ")

sys를 활용하여 시간을 조금이나마 확보하였습니다.

그리고 세가지 리스트를 활용하여 coord의 요소 값이 idx에서 몇 인덱스값을 가지는지 result에 순서대로 저장하여 출력했습니다.

값은 알맞게 나왔지만 시간초과입니다.


N = int(input())

coord = list(map(int, input().split()))

idx = sorted(list(set(coord)))

dic = {idx[i]: i for i in range(len(idx))}


for i in coord:
    print(dic[i], end=" ")
  • sys를 쓰지 않아도 됩니다.
  • dictionary의 특성을 이용하여 해결합니다.
  • 우선 값을 저장할 coord리스트와 coord리스트를 반복되는 요소없이 정렬했을 때 어떤 인덱스를 가지는지 알기 위한 idx리스트를 만들어줍니다.
  • dic의 요소를 idx에서 구한 인덱스[i]일 때 coord에서는 무슨 값을 가지는지 알 수 있도록 만들어줍니다.
    딕셔너리의 값
  • 마지막으로 coord값을 딕셔너리의 키로 할당해주면 해당 키에 맞는 인덱스값이 출력됩니다.