크래프톤 정글 TIL : 1115

lazyArtisan·2024년 11월 15일
0

정글 TIL

목록 보기
138/147

👾 나만무


발표영상 제작



⚔️ 백준


📌 10815 숫자 카드

N = int(input()) # 상근이가 갖고 있는 카드 수
Nums = set(map(int,input().split())) # 숫자 카드에 적혀있는 정수
M = int(input())
Query = list(map(int,input().split())) # 숫자인지 아닌지 확인해야 하는 숫자들

for q in Query:
    if q in Nums:
        print("1",end=" ")
    else:
        print("0",end=" ")

정글 컴퍼스에는 태그가 이분 탐색으로 돼있어서 저번에는 이분 탐색으로 풀긴 했는데
이번에는 그냥 set로 풂. 시간 1/4로 줄어듦.
사실 당연한게, set는 해시 함수를 이용하기 때문에 오래 걸릴 수가 없음. O(1)임.
연습 용도 아니면 굳이 이분 탐색으로 풀 이유가 없다.

📌 2343 기타 레슨

# 이분탐색을 써야 한다는 힌트를 얻어버림.
# 가능한 블루레이의 크기는 총합은 무조건 포함됨
# 총합에서 최솟값까지 가는 방법?
# 
N, M = map(int,input().split())

알아낸 것

  • 최대 크기의 최솟값을 구해야 하는 문제
  • 총합에서부터 정답까지 이분탐색?

자꾸 부분합까지 계산하면 n^2 되는거 아닌가 하고
부분합을 전체에 대해 계산하는 방식은 쳐다도 안 봤는데
이분 탐색을 쓰면 nlogn이라 상관 없었다.

오랜만에 알고리즘 풀어서 그런가 뇌가 굳은듯;
나중에 다시 풀어보자.

📌 1654 랜선 자르기

# 그냥 나눈 몫이 해당 랜선에서 얻을 수 있는 랜선 개수
# 가능한 최대 길이는 랜선의 최소값
# 거기서부터 0까지 이분탐색 조진 후에
# K개의 랜선을 탐색한 길이로 나누면 랜선 몇 개 가질 수 있는지
K, N = map(int,input().split())
LAN = [int(input()) for _ in range(K)]
s, e = 0, min(LAN)
mid = (s+e)//2
while (s<=e):
    for L in LAN:

방금 거하고 정확하게 똑같은 문제.
내일 마저 풀 것.

0개의 댓글