투포인터(4)
-
★투포인터복습필요[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]백준_11728번_배열 합치기_투포인터 개념 설명_풀이
공부하는허딩크 : https://www.youtube.com/live/L_d3lgvqAlM?feature=shared일단 투포인터 말고 sorted로 풀었다. import sysinput = sys.stdin.readlineN, M = map(int, input().split())A = list(map(int, input().split()))B = list(map(int, input().split()))answer = A + Bprint(*sorted(answer)) answer.sort()와 sorted(answer)의 시간복잡도는 동일하나, 메모리 효율성 측면에서는 answer.sort()가 원본 데이터를 수정하기 때문에 더 좋다.import sysinput = sys.stdin.readlineN, ..
2024.09.08 -
[python_파이썬_Fail]백준_1789_수들의 합_투포인터, 그리디 알고리즘_풀이
공부하는허딩크 : https://www.youtube.com/live/dnKTEnrL2OM?feature=shared투포인터 알고리즘 쉽게 봤다가 2시간 30분째 해매고 있다. 실버5정도 문제인데 답이 안나오네. 문제를 읽고 모든 경우의 수 itertools로 해결하려고 했는데 파이썬에서도 memoryError가 나오네. 고민하면서도 과연 itertools로 부르트포스 알고리즘 처럼 모든 경우의 수를 한번씩 다 확인하는 작업이어서문제의 범위가 4, 294, 967, 295이므로 안될 걸로 예상했다.import sysimport itertoolsinput = sys.stdin.readline"""N개의 자연수의 합_N의 최댓값"""S = int(input())s = list(i for i in range(..
2024.09.05 -
투포인터 처음 보는데 어렵네_[python_파이썬_Fail]백준_2003번_수들의 합_투포인터 개념 설명_풀이
공부하는허딩크 : https://www.youtube.com/live/dnKTEnrL2OM?feature=shared 처음 문제를 보고 itertools를 생각했다. 이 전에 백트레킹을 공부하면서 itertools를 계속 봐서 그런지는 모르겠지만, 수열이란 단어를 보고 모든 수열을 뽑아서 더해보면 될 것이라고 생각했다. 예를 들면 itertools로 하면 (1, 2), (1, 3) 이런 조합도 가능하다. 단, 문제의 조건은 연속된 수들의 합이므로 (1, 3)의 조건은 불가능하다. 즉, 정답이 더욱 커진다.즉. itertools로는 불가능하다는 이야기가 나온다. 만약 나온 조합이 연속되지 않은 조건을 추가적으로 걸면 가능하겠지만굳이 그럴 필요 없이 다른 방법을 찾아봤다.itertools로 하려고 했으나 이..
2024.09.05