Python으로 구현한 18870번 좌표 압축 문제 풀이입니다.
https://www.acmicpc.net/problem/18870
from bisect import bisect_right
n = int(input())
data = list(map(int, input().split()))
sorted_data = sorted(list(set(data)))
def search(data, right_value) :
right_index = bisect_right(data, right_value)
return right_index - 1
for target in data :
print(search(sorted_data, target), end=' ')
1. 입력받은 data 리스트의 요소의 중복을 제거하고 오름차순으로 정렬하여 sorted_data 리스트에 할당한다.
2. data 리스트의 요소(target)를 하나씩 가져와 search() 함수에 전달하여 반환받은 값을 출력한다.
3. search() 함수에서는 bisect_right() 을 통해 리스트에 가장 우측에 존재하는 right_value 값을 갖는 인덱스를 구하고, 1을 감소시켜 반환한다.
'백준(Python) 풀이 > 이분 탐색' 카테고리의 다른 글
백준(Python) 2805번 나무 자르기 풀이 (1) | 2022.10.04 |
---|---|
백준(Python) 10815번 숫자 카드 풀이 (0) | 2022.07.04 |
백준(Python) 10816번 숫자 카드 2 풀이 (0) | 2022.05.16 |
백준(Python) 1920번 수 찾기 풀이 (0) | 2022.05.16 |
백준(Python) 2110번 공유기 설치 풀이 (0) | 2022.01.07 |