문제: https://www.acmicpc.net/problem/18870
이분탐색 카테고리로 찾았던 문제인데, 이분탐색으로 풀지않고 dictionary를 활용해서 제한시간안에 풀었다.
주어진 수들 중 가장 작은 수를 0으로 지정하고 수가 커갈수록 1씩 증가시켜 준다고 생각하면 쉽게풀 수 있다.
dictionary를 아래의 방식으로는 잘 활용해본적 없어서 익숙해지면 다를 풀이를 쓸때도 활용하면 좋을 것 같다.
n = int(input())
nums = list(map(int, input().split()))
nums2 = sorted(list(set(nums)))
dict = {}
for i in range(len(nums2)):
dict.update({nums2[i] : i})
for i in range(n):
print(dict[nums[i]], end=' ')
'코딩테스트' 카테고리의 다른 글
[Python] 백준 21608번 - 상어 초등학교 (0) | 2023.07.13 |
---|---|
[Python] 백준 14502번 - 연구소 (0) | 2023.07.12 |
[Python] 백준 1654번 - 랜선 자르기 (0) | 2023.07.03 |
[Python] 백준 5427번 - 불 (0) | 2023.06.29 |
[Python] 백준 2583번 - 영역 구하기 (0) | 2023.06.14 |