[알고리즘] 18870 좌표 압축

게시물을 작성하면서 복습하는 문제를 선정하는 기준은<solved.ac 티어 실버 2 (Silver 2) 이상>입니다.

※ 본 사진과 해당 게시글 내용의 문제 모두 백준 : 온라인 저지[Baekjoon_OnlineJudge]사이트에서 발췌해왔습니다.

❓ 문제

백준 온라인 저지 (Baekjoon Online Judge) : 18870 좌표 압축


❗ 풀이

My Code

메모리 : 148208KB
시간 : 2124ms

import sys
N = int(sys.stdin.readline())
ls = set()
num = list(map(int,sys.stdin.readline().rstrip().split()))
ls = sorted(list(set(num)))
d = {ls[i] : i for i in range(len(ls))}
for n in num :
    print(d[n], end=' ')

단순하게 set 와 dictionary로 풀 수 있는 문제였다.
입려되는 N개의 숫자들을 하나씩만 사용해서 index를 부여해야하기 때문에

우선 중복값이 없도록 set로 받아준다.
그 이후, set를 다시 list로 변환한 후, 정렬해준다.
( set객체에는 정렬 불가능 )

그 이후,
for문을 통해
정렬된 순서대로 index값을 부여한 dict객체를 만들고

이를 활용해
처음 받았던 숫자 배열 요소들을
dictionary에서 조회하여 출력한다.

해결방법이 어렵다기보다는 여러 객체 유형에 대한 기본 지식이 필요했던 문제였던 것 같다.


좋은 웹페이지 즐겨찾기