이분탐색 8

[이분탐색] 프로그래머스. 입국심사

문제 https://programmers.co.kr/learn/courses/30/lessons/43238?language=python3 문제요약 n 명의 사람들이 대기하고 있다, list에는 창구별 대기시간이 주어진다. 사람들이 볼일을 다 보는 시간은 언제일까요? 풀이 어제 푼 도토리랑, k번째 숫자를 생각하며 하나씩 추가하는 관점이 아니고 그 시간이 됐을 때 몇 명이 빠졌을까를 생각해보니 답을 추론할 수 있었다. 6명이 대기하고 있다면, 6명이 다 빠졌을 시간을 구하는 것이다. n = 6, w = [7,10] 예를 들어, 7분이 됐을 때는 1명이 볼 일을 다 본 상태일 것이고 10분이 됐을 때는 2명이 볼 일을 다 봤을 것이다. 즉 ( time 을 기준으로 창구별 대기시간의 몫) 의 합이 이미 볼 일..

⚡️algorithm 2022.05.18

[이분탐색] 백준 11662. 민호와강호 (거리계산, 수학, 삼분탐색)

문제링크 참고링크 https://goodsosbva.tistory.com/m/37?category=454008 https://m.blog.naver.com/PostView.nhn?blogId=kks227&logNo=221432986308&proxyReferer=https:%2F%2Fwww.google.com%2F https://velog.io/@chang626/11662-%EB%AF%BC%ED%98%B8%EC%99%80-%EA%B0%95%ED%98%B8 백준 11662번 - 민호와 강호 출처 : 11662번: 민호와 강호 (acmicpc.net) 11662번: 민호와 강호 민호와 강호가 2차원 좌표 평면 위에 있다. 민호는 점 A(Ax, Ay)에서 점 B(Bx, By)를 향해 걸어가고 있고, 강호는 점 ..

⚡️algorithm 2022.05.18

[이분탐색] 백준 10815. 숫자카드

문제 https://www.acmicpc.net/problem/10815 숫자가 카드안에 있는지 탐색하는 문제다. 문제조건에 두 숫자 배열의 크기가 50만이 넘기 때문에 find나 filter나 완전탐색으로 하면 시간초과가 뜨기 때문에 업다운 게임처럼 이분탐색으로 힌트를 줌으로써 탐색범위를 효과적으로 줄여야 한다. 코드 n = int(input()) card = list(map(int, input().split())) m = int(input()) nums = list(map(int, input().split())) def binary(mid): return card[mid] card.sort() ans = [] for i in nums: l = 0 r = n-1 j = 0 while l i: r = m..

⚡️algorithm 2022.05.18

[이분탐색] 백준 16434. 드래곤 앤 던전

문제 링크 드래곤이랑 용사랑 싸울 건데, 용사가 이기기 위해 필요한 최소한의 hp가 얼마인가요? 1 try import sys sys.stdin = open('.//이분탐색//input2.txt', 'rt') n, yp = map(int, input().split()) # n 방 개수 # pw 초기 공격력 print(n,yp) # t a h # t = 1 몬스터, a 공격력, h 생명력 # t = 1 용사, a 공격력 증가, h 생명력 증가 g = [ list(map(int, input().split())) for _ in range(n)] def war(yp,yh): mp = 0 mh = 0 mid = yh for l in g: a = l[1] h = l[2] if l[0] == 1: # 몬스터 만남 ..

⚡️algorithm 2022.05.17

[이분탐색] 백준 2110. 공유기 설치

문제 문제 해석 n개의 집들에, c개의 공유기를 설치하고자 한다. 한 집에 하나씩 설치하고, 가장 멀리씩 설치할 때 가장 인접한 거리로 설치된 간격을 출력하라. 주요 변수 low, high : 탐색 범위 * high는 집의 끝과 끝에 설치했을 때가 가장 멀고, 공유기의 개수가 가장 적게 설치될 때의 간격인데 문제 조건에서 공유기가 2개 이상 주어진다고 했기 때문에 high는 양 끝집을 설치했을 때보다 길 수 없다. idx : 직전에 설치된 집의 좌표 mid : (띄워야 하는) 공유기의 최소 간격에 대한 변수 최종 코드 # 집 n개 # 공유기 c개 # 한 집에 하나, 가장 멀리씩 설치 max d import sys input = sys.stdin.readline n,c = map(int, input().s..

⚡️algorithm 2022.05.16

[이분탐색] 백준 6236. 용돈관리

문제 바로가기 문제 해석 하루 사용하는 금액과, 돈을 인출할 수 있는 횟수가 주어짐. 인출 횟수를 꼭 맞추고 하루 돈 소비량을 충족시킬 수 있는 최소 인출금액(mid로 탐색)을 구해라. 단, 인출 금액은 고정되고 돈이 부족하면(오늘 쓸 돈이 더 많으면) 입금했다가 재인출 주요 변수 기간 : n 인출 횟수 : m 매일 쓰는 금액 : cost list 탐색범위 low : 매일 쓰는 금액의 최대값으로 맞춰준다, 문제 조건 N

⚡️algorithm 2022.05.16