728x90
https://www.acmicpc.net/problem/18870
해결코드
n = int(input())
n_li = list(map(int, input().split()))
li = []
li = list(sorted(set(n_li)))
li_dic = {li[i]: i for i in range(len(li))}
for i in n_li:
print(li_dic[i], end=' ')
문제풀이
좌표 압축문제로 'Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다' 라는 말은
리스트 원소 크기 순서를 출력하라는 뜻이다.
코드를 보자
n = int(input())
n에 수의 개수를 받아준다.
n_li = list(map(int, input().split()))
n_li에 공백을 포함하여 n개의 원소를 입력받아 리스트를 만들어준다.
li = []
li = list(sorted(set(n_li)))
li라는 리스트를 만든다.
n_li를 set함수를 통해 중복값을 없앤후 오름차순 정렬 후 list화 시킨 것을 li에 넣어준다.
li_dic = {li[i]: i for i in range(len(li))}
li_dic이라는 딕셔너리를 만들어준다.
(li의 원소와 인덱스 번호를 차례대로 넣어준다)
ex) li = [-10, -9, 2, 4] 이면 li_dic = {-10: 0, -9: 1, 2: 2, 4: 3}
for i in n_li:
print(li_dic[i], end=' ')
n_li의 원소로 for문을 실행시킨다.
li_dic[i]를 실행하면 n_li 원소의 인덱스 값이 순서대로 출력된다.
728x90
'Algorithm' 카테고리의 다른 글
[알고리즘] 백준 1931 회의실 배정 (파이썬 풀이) (0) | 2022.02.24 |
---|---|
[알고리즘] 백주 2606 바이러스 (파이썬 풀이) (0) | 2022.02.23 |
[알고리즘] 백준 1074 Z (파이썬 풀이) (0) | 2022.02.21 |
[알고리즘] 백준 2630 색종이 만들기 (파이썬 풀이) (0) | 2022.02.20 |
[알고리즘] 백준 11724 연결 요소의 개수 (파이썬 풀이) (0) | 2022.02.19 |
댓글