이진탐색(7)
-
★투포인터복습필요[python_파이썬_Pass]백준_7795번_먹을것인가먹힐것인가_이분탐색_풀이
공부하는허딩크 : https://www.youtube.com/live/NQxG_GQn54s?feature=shared 이진탐색의 기본형태를 몇 문제 풀고 나서 해당 문제를 풀었다. 일단, 이진탐색으로 해결은 했는데 기존에는 어떤 특정 요소를 찾는 것이었다면 이번에는 목표값보다 큰 수를 찾는 것이라서 어떤 조건으로 if를 해야하는지 return을 해야하는지 많이 고민했다.※B_nums를 한개씩 꺼내서 A_nums를 이진탐색해서 B_nums보다 큰 값들을 구하는 목적이다.※ 예시 실행할 때 아래와 같이 된다. 즉, start는 m보다 큰 값들이 시작되는 인덱스를 가리킨다. i = 3일때 start 0, end 4 일때 1. mid = 2 arr[2] = 3, i = 3과 같아서 els..
2024.09.20 -
★[python_파이썬_Pass]백준_2512번_예산_이분탐색_풀이
공부하는허딩크 : https://www.youtube.com/live/NQxG_GQn54s?feature=shared 와 어렵다.고민 많이 했다.M이 10억이 최대치니까 아래의 코드는 시간초과가 날 것으로 예상했다.#일단 상한액 밑으로는 모두 지급 후 상한액 이상인 것들은 상한액으로 고정#그럼 budget을 다 더한 후 M과 비교해서 budget이 크면 max(budget) = 상한액 - 1을 계속 한다."""시간초과"""import sysinput = sys.stdin.readlineN = int(input())budget = list(map(int, input().split()))M = int(input())def budgets(data, M): adjust = max(data) while..
2024.09.19 -
이 부분 다시리뷰 필요[python_파이썬_Pass]백준_10816번_수찾기_이분탐색_풀이
공부하는허딩크 : https://www.youtube.com/live/YUFXMQL1DWY?feature=shared 이전에 2번 맞은 건 일단 넘어가고 가장 효율적인 코드라고 생각되는 방향으로 만들었다.기존 다른 문제에서는 비슷하게 되었는데 핵심은 N_nums를 집합(set)으로 하면 되지만, count를 지원하지 않으며,중복되는 숫자들의 개수를 구해야 하기 때문에 어차피 집합은 불가능하다.import sysinput = sys.stdin.readlineN = int(input())N_nums = list(map(int, input().split()))M = int(input())M_nums = list(map(int, input().split()))for i in M_nums: print(N_n..
2024.09.14 -
[python_파이썬_Pass]백준_10815번_숫자카드_이분탐색_풀이
공부하는허딩크 : https://www.youtube.com/live/YUFXMQL1DWY?feature=shared이전에 해시를 이용한 방법으로 해결했으나 이진탐색 및 해시등 여러가지를 학습한 후 다시 풀어보았다.학습내용 : https://heodinkcodingdiary.tistory.com/104 [python_파이썬_Pass]백준_1920번_수찾기_이분탐색_풀이공부하는허딩크 : https://www.youtube.com/live/YUFXMQL1DWY?feature=shared 일단 딱 봐도 쉬운 문제였다. 간단한 for문과 if문으로 작성했는데 시간초과....시간 복잡도리스트 탐색에서 M_nums의 각 요소에 대해heodinkcodingdiary.tistory.com 다른거 다 필요 없이 set..
2024.09.14 -
★[python_파이썬_pass]백준_1072번_게임_이분탐색_풀이
공부하는허딩크 : https://www.youtube.com/live/5TQ9cxVHNk0?feature=shared처음 이진탐색을 해결할때 대략적인 형태를 보고 처음 문제를 접했다... 근데 역시나 활용하기에는 내 실력이 많이 부족했다. 방향은 그래도 근접하게 접근을 했다.1. 일단 승률 Z를 구한다.2. data를 Y부터 X까지 나오게 리스트를 만든다.3. Z(target)과 data를 함수 요소로 넣어서 실행한다.4. mid를 구한다.5. 신규 x, y를 구한 후 다시 승률을 만들어서 기존 Z와 비교한다. ㄴ 다르면 end = mid - 1 ㄴ 같으면 start = mid + 1그런데 답이 이상하게 나온다.....import sysinput = sys.stdin.readlineX, Y = m..
2024.09.13 -
[python_파이썬_Pass]백준_2776번_암기왕_이분탐색_풀이
공부하는허딩크 : https://www.youtube.com/live/LeGt8NxRPdY?feature=shared - YouTube www.youtube.com 유사한 문제를 먼저 풀어서 동일한 방법으로 바로 해결했다.딕셔너리를 만들어 주고 get함수를 이용하면 쉽게 해결 할 수 있다. (활용방법은 아래 참고)백준 수찾기_1920번: https://heodinkcodingdiary.tistory.com/104 [python_파이썬_Pass]백준_1920번_수찾기_이분탐색_풀이공부하는허딩크 : https://www.youtube.com/live/LeGt8NxRPdY?feature=shared - YouTube www.youtube.com 일단 딱 봐도 쉬운 문제였다. 간단한 for문과 if문으로 작성..
2024.09.11