728x90
반응형
SMALL

이진 탐색 14

[Python] 20551번 Sort 마스터 배지훈의 후계자

✏️ 문제 문제 파악이분 탐색을 사용해서 풀어야 하는 전형적인 문제! 값이 같으면 해당 인덱스를 바로 출력하는 방식으로 코드를 짜면 된다. 알고리즘자료 구조정렬이분 탐색  코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())a = [int(input()) for i in range(n)]a.sort()for i in range(m): num = int(input()) index = n start, end = 0, n-1 while start = n else index)

PS/BOJ 2024.08.21

[Python] 16401번 과자 나눠주기

✏️ 문제문제 파악자른 길이는 다른 막대에 붙이거나 연결해서 쓸 수 없기 때문에 버린다고 가정하고 코드를 짜야한다. 알고리즘이분 탐색매개 변수 탐색  코드import sysinput = sys.stdin.readlinem,n = map(int, input().split())snacks = list(map(int, input().split()))length = 0start, end = 1, max(snacks)while start = m: length = max(length, mid) start = mid + 1 else: end = mid - 1print(length)

PS/BOJ 2024.08.17

[Python] 15810번 풍선 공장

✏️ 문제 문제 파악풍선의 개수는 해당 시간에서 각 시간을 나눈 몫의 합이라는 걸 알면 쉽게 풀 수 있다!최대 시간을 end로 주는 걸 생각 못하고 end 없이 코드를 어떻게 짜야하지 .. 하고 있었던 .. 알고리즘매개 변수 탐색이분 탐색  코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())a = sorted(list(map(int, input().split())))start, end = 1, max(a) * mwhile start = m: end = mid - 1 else: start = mid + 1print(start)

PS/BOJ 2024.08.05

[Python] 11663번 선분 위의 점

✏️ 문제 문제 파악(큰 인덱스 - 작은 인덱스)를 출력해서 문제를 풀었는데선분의 시작점이나 끝점이 점의 좌표와 같을 때 예상 값보다 1개씩 작게 나오는 문제가 있었다..그래서 시작점이나 끝점 중 하나를 원래 인덱스 값보다 -1 해서 계산하면 출력이 잘 나오긴 한다...근데 뭔가 야매로 푼 거 같아서 찝찝 ㅠ 했는데 다른 정답코드를 찾아보니 이런 식으로 나눠서 푸는 게 맞는 것 같다! 휴 알고리즘정렬이분 탐색  코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())point = sorted(list(map(int, input().split())))def bs(ary, l, switch): start, end = 0, n-1 i ..

PS/BOJ 2024.08.05

[Python] 2428번 표절

✏️ 문제문제 파악이분 탐색으로 안풀면 시간 초과가 뜬다. 알고리즘정렬이분 탐색  코드이분 탐색 안쓰고 풀 때 시간 초과 코드import sysinput = sys.stdin.readlinen = int(input())files = sorted(list(map(int, input().split())))cnt = 0for i in range(n-1): for j in range(i+1, n): if files[i] = 0.9 * files[j]: cnt += 1 print(cnt)이분 탐색 사용import sysinput = sys.stdin.readlinen = int(input())files = sorted(list(map(int, input().split())))cnt = 0..

PS/BOJ 2024.08.05

[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/BOJ 2024.07.30
728x90
반응형
LIST