⚡️algorithm 96

[이분탐색] 백준 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

[문자열, 파이썬] 최장 공통 부분 문자열

LCS(Longest Common Substring) 최장 공통 부분 문자열로, 공통 문자열 중 가장 길이가 긴 것을 찾아내는 알고리즘이다. DP나 Graph 문제 풀 때 비슷한 문제를 꽤나 풀었던 거 같은데, 다시 푸니 아예 생각이 안났다. for문을 두 번 쓰는 건 알겠는데, 이차원 그래프를 돌며 각 인덱스에 해당하는 문자를 비교해서 값을 넣는 방식이 어색하다. 기본 문제이기 때문에 자꾸 연습해서 머리를 컴퓨터 방식에 적응되도록 해야겠다 @ㅅ@ a, b = map(list, input().split()) g = list([0]*(len(b)+1) for _ in range(len(a)+1)) ans = 0 for i in range(1,len(a)+1): for j in range(1,len(b)+1..

⚡️algorithm 2022.05.15