[Python] 1654번 랜선 자르기 ✏️ 문제문제 파악이분 탐색으로 푸는 대표적인 문제!! 알고리즘매개 변수 탐색이분 탐색 코드k, n = map(int, input().split())lan = sorted([int(input()) for _ in range(k)])left, right = 1, max(lan)while left PS/백준 2024.07.26
[Python] 2512번 예산 ✏️ 문제문제 파악이분 탐색으로 푸는 거의 대표적인 문제!! 알고리즘매개 변수 탐색이분 탐색 코드n = int(input())req = sorted(list(map(int, input().split())))m = int(input())if (sum(req) = req[i]: use += req[i] else: use += mid if use > m: end = mid - 1 else: start = mid + 1 print(end) PS/백준 2024.07.26
[Python] 1072번 게임 ✏️ 문제문제 파악처음에는 int((y / x) * 100) 이렇게 줬는데 계속 틀리길래 찾아보니까 부동소수점 오차 때문에 int((y / x) * 100) 가 아닌 int(y * 100 / x) 이런 식으로 주어야 한다고 한다... 알고리즘수학이분 탐색 코드x,y = map(int, input().split())z = int(y * 100 / x)start, end = 1, xwhile start z: end = mid - 1 else: start = mid + 1if start > x: print(-1)else: print(start) PS/백준 2024.07.26
[Python] 2776번 암기왕 ✏️ 문제문제 파악이 문제는 이분 탐색을 써서 풀 때 함수를 안쓰면 시간 초과가 뜬다 .. (나만 그런가) 그리고 출력이 수첩2에 있는 숫자를 기준으로 1, 0 출력이 되므로 수첩2는 정렬하면 안된다. 수첩1을 정렬하고 수첩1의 요소를 가지고 이분 탐색을 하면 쉽게 풀 수있다. 알고리즘자료 구조정렬이분 탐색해시를 사용한 집합과 맵 코드import sysinput = sys.stdin.readlinedef bs(start, end, note1, i): while start note2[i]: end = mid - 1 else: start = mid + 1 return 0 for _ in range(int(input())): n = int(input()) .. PS/백준 2024.07.26
[Python] 7795번 먹을 것인가 먹힐 것인가 ✏️ 문제 문제 파악처음에는 a 배열을 기준으로 이분 탐색을 하려했는데 생각해보니 a 배열의 각 요소가 b 배열의 요소보다 큰 지 안 큰 지에 대해서 정답을 구하는 것이므로 b 배열을 기준으로 이분 탐색을 하는 것이 맞다!이분 탐색을 하기 위해선 배열이 정렬되어 있어야한다. 위의 예시를 보면 쌍의 개수는 b 배열의 인덱스+1 한 값과 같다는 걸 알 수 있다.while ... if b[mid] 또한 큰 쌍의 개수를 구하므로 end + 1을 해주어야 한다. 알고리즘두 포인터정렬이분 탐색 코드for _ in range(int(input())): n,m = map(int, input().split()) a = sorted(list(map(int, input().split()))) b = sorted.. PS/백준 2024.07.26