PS/백준 130

[Python] 17266번 어두운 굴다리

✏️ 문제문제 파악이건 경우의 수를 위치를 기준으로 3가지로 나눠서 생각해야 한다. 0 위치 ~ 가로등[0]의 위치가로등[a]의 위치 ~ 가로등[a+1]의 위치가로등[m-1]의 위치 ~ n 위치 알고리즘구현이분 탐색  코드import sysinput = sys.stdin.readlinen = int(input())m = int(input())location = list(map(int, input().split()))length = 0if m == 1: length = max(location[0], n - location[0])else: for i in range(m): if i == 0: x = location[i] elif i == m-1: x = n - location..

PS/백준 2024.07.30

[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

[Python] 2805번 나무 자르기

✏️ 문제 문제 파악이분 탐색을 사용해야 하는 거의 대표적인 문제!!!!!이분 탐색을 안 사용하면 보통.. 아니 대개 "시간 초과" 가 뜬다... ^^ 알고리즘이분 탐색매개 변수 탐색 코드n, m = map(int, input().split()) trees = list(map(int, input().split())) def binary_search(trees, target): left, right = 0, max(trees) while left mid: total += h - mid if total     ⭐️ 이분 / 이진 탐색에 대해 잘 모른다면? [알고리즘] 이분 / 이진 탐색 (Binary Search) 알고리즘이분 / 이진 탐색 (Binary Search) ?정렬된 리..

PS/백준 2024.07.25