랜선 자르기

이분 탐색 문제 두 문제로 기초를 다졌다!! 나무 자르기 문제와 비슷해서 수월하게 풀 수 있었다.

CODE

import sys
read = sys.stdin.readline

k, n = map(int, read().split())
LAN = list(int(read()) for _ in range(k))
MAX_LAN = sum(LAN)//n
MIN_LAN = 0
if MAX_LAN == 1:
    print(1)
    sys.exit()

def cut(x):
    tot = 0
    for l in LAN:
        tot += l//x
    return tot

answer = 0
while MAX_LAN >= MIN_LAN:
    mid = (MIN_LAN+MAX_LAN)//2
    if cut(mid) >= n:
        answer = max(answer, mid)
        if answer == mid:
            MIN_LAN = mid+1
        else:
            break
    else:
        MAX_LAN = mid-1
print(answer)


숫자 카드 2

이분 탐색 문제였는데, dictionary를 활용해 풀었다… 이분 탐색으로 다시 풀어보자.

CODE

import sys
read = sys.stdin.readline

_ = int(read())
tmp1 = list(map(int, read().split()))
_ = int(read())
tmp2 = list(map(int, read().split()))

num = dict()

for i in tmp1:
    if i in num:
        num[i] += 1
    else:
        num[i] = 1
answer = []
for i in tmp2:
    if i in num:
        answer.append(num[i])
    else:
        answer.append(0)
print(*answer)


풀어야 할 문제

  • 스타트 택시🔥🔥
  • 미네랄
  • 아기 상어
  • 전깃줄 -2
  • 치즈🔥
  • 소가 길을 건너간 이유
  • 벽 부수고 이동하기
  • 알 수 없는 문장


```