일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- SSR
- RTK Query
- 이분 검색
- Jest
- Promise
- useAppDispatch
- CORS
- ESlint
- TS
- React
- recoil
- 반공변성
- 호이스팅
- 인터섹션
- dfs
- 공변성
- Cypress
- 타입 좁히기
- app router
- autosize
- 태그된 유니온
- 투포인터
- webpack
- CI/CD
- 결정 알고리즘
- 무한 스크롤
- 리터럴 타입
- async/await
- map
- tailwind
Archives
- Today
- Total
짧은코딩
정렬된 배열에서 특정 수의 개수 구하기(이진 탐색 라이브러리 bisect) 본문
코딩 테스트(Python)/이것이 취업을 위한 코딩 테스트다
정렬된 배열에서 특정 수의 개수 구하기(이진 탐색 라이브러리 bisect)
5_hyun 2022. 7. 24. 14:39반응형

해결법
이 문제는 원하는 숫자 x의 가장 첫번째 위치와 마지막 위치를 구해서 빼면 되는 문제이다.
-bisect 라이브러리
from bisect import bisect_left, bisect_right
bisect_right(ary, x)
bisect_left(ary, x)
ary는 집합, x는 원하는 값 이렇게 작성하면 된다.
예를 들어 bisect_right는 정렬된 순서를 유지하면서 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾아준다. 시작 복잡도는 O(logN)이다.
교재 코드
from bisect import bisect_left, bisect_right
n, x = map(int, input().split())
ary = list(map(int, input().split()))
answer = bisect_right(ary, x) - bisect_left(ary, x)
if answer == 0:
print(-1)
else:
print(answer)
처음에 라이브러리도 몰랐고 문제 풀이법도 생각하지 못했다ㅠㅠ
반응형
'코딩 테스트(Python) > 이것이 취업을 위한 코딩 테스트다' 카테고리의 다른 글
금광 (0) | 2022.07.25 |
---|---|
10825 국영수(다중 정렬) (1) | 2022.07.22 |
18352 특정 거리의 도시 찾기 (1) | 2022.07.21 |
18406 럭키 스트레이트 (0) | 2022.07.19 |
모험가 길드 (0) | 2022.07.18 |