일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 싸이월드
- 리액트 네이티브 맥
- unity stencil buffer
- react native ios 기기 연결
- cyworld
- html
- node
- javascript
- GitHub
- 스탠실 버퍼 사용
- react native typescript navigation
- react native typescript navigate
- 스탠실 버퍼 시작
- react native mac
- react native
- c++ 정보은닉
- c++ using
- node.js
- 벡터와 리스트의 차이
- C++
- react native accessible
- react
- Expo
- CSS
- 스탠실 버퍼 튜토리얼
- react-native
- stencil buffer
- 리액트 네이티브 설치 오류
- react native 타입스크립트
- react native typescript
Archives
- Today
- Total
혀니의 이거저거 뿌시기
백준 19637 IF문 좀 대신 써줘 - 파이썬 본문
728x90
19637번: IF문 좀 대신 써줘 (acmicpc.net)
19637번: IF문 좀 대신 써줘
첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭
www.acmicpc.net
이분탐색.. 잘 해오고있었는데
갑자기 뙇 어려운 문제 봉착..
근데 자꾸 시간초과가 뜨는것임 ;; 이분탐색으로 했는데도 .....
그래서 찾아보니 따로 함수를 만들고 조건에 해당될 떄만 불러오는게.. 아무래도 시간을 덜 쓰는듯 싶다.
import sys
N, M = map(int, sys.stdin.readline().split())
rank = [sys.stdin.readline().split() for _ in range(N)]
def bs(rank, cnt):
start, end = 0, len(rank) - 1
res = 0
while start <= end:
mid = (start + end) // 2
if int(rank[mid][1]) >= cnt:
end = mid - 1
res = mid
else:
start = mid + 1
return res
for i in range(M):
cnt = int(sys.stdin.readline())
print(rank[bs(rank, cnt)][0])
이것이 정답 코드인데...
우리가 설정하고싶은 등급들의 정보를 이차원 배열로 만들고
이분 탐색에서 이 배열들의 1인덱스들을 탐색할 목적으로 돌려가면서
result 는 rank[mid][1]이 cnt보다 크거나 같을때마다 mid로 초기화를 해주면
마지막에 이 if문에 도달했을 때의 mid값이 곧 우리가 구하고자 하는 rank이므로 그때 출력해주면 된다.
728x90
'알고리즘 공부(C++)' 카테고리의 다른 글
백준 20291 파일 정리 (파이썬) 문자열 (0) | 2022.09.07 |
---|---|
백준 11663 선분 위의 점(파이썬) 이분 탐색 (0) | 2022.09.07 |
백준 1343 폴리오미노 (0) | 2022.09.06 |
백준 2805 나무 자르기 - 이분 탐색 (0) | 2022.09.06 |
백준 1935 후위 표기식2 ( stack ) (0) | 2022.09.05 |