Baekjoon

[백준] 18870 좌표 압축 (실버2)

hellosonic 2023. 5. 28. 14:13

문제요약

나의 코드 및 설명

n = int(input())
num_list = list(map(int, input().split()))
sorted_num_list = sorted(num_list) #입력받은 숫자들을 정렬한다.

d = {} #빈 딕셔너리 생성

k = 0 #압축 숫자
for i in range(len(sorted_num_list)): #정렬된 숫자들을 돌면서
    if sorted_num_list[i] not in d: #딕셔너리에 추가가 안된 숫자라면
        d[sorted_num_list[i]] = k #딕셔너리에 압축 숫자를 넣는다
        k += 1 #딕셔너리에 신규 키값 들어올때마다 1씩 증가

for i in range(len(num_list)): #원본 숫자 리스트들을 돌면서
    print(d[num_list[i]], end = " ") #딕셔너리에 저장된 값 출력한다.

print()

피드백

처음에 문제가 잘 이해가 되지 않아서 다른 사람의 글을 보고 이해했다. 그 과정에서 딕셔너리를 활용했다는 것을 보게 되었고, 나 역시 딕셔너리를 활용하여 구현하였다. 딕셔너리를 활용하여 문제 풀이를 할 수 있다는 것을 사전에 알지 못했다면 아마 엄청 헤매다가 못풀었을 것 같다 ㅠ ... <dict[키] = 값> 을 통해 빈 딕셔너리에 키,값을 집어넣을 수 있다는 것을 알게 되었고, 꽤나 재밌게 풀었던 문제이다. 입력받은 숫자 리스트의 순서대로 값을 0부터 증가시키며 집어넣기 위해 딕셔너리를 활용할 수 있다는 것을 배울 수 있었다.