본문 바로가기
알고리즘

[백준/파이썬] #20444

by 룰루루 2025. 5. 26.

문제를 보고 한 번 자를 때마다 모든 케이스를 다 탐색하는, 지수 함수 복잡도의 경우밖에는 생각나지 않아서 풀이를 참고했다. 정말 간결하고 직관적인 풀이였다. 

def divide():
    left, right = 0, N // 2
    while left <= right:
        row_cut = (left + right) // 2
        col_cut = N - row_cut
        pieces = (row_cut + 1) * (col_cut + 1)
        if K == pieces:
            return True
        elif K > pieces:
            left = row_cut + 1
        else:
            right = row_cut - 1
    
    return False


if __name__ == "__main__":
    N, K = map(int, input().split())
    print("YES") if divide() else print("NO")

 

'알고리즘' 카테고리의 다른 글

[백준/파이썬] #1477  (0) 2025.06.02
[백준/파이썬] #2412  (0) 2025.05.29
[백준/파이썬] #13023  (0) 2025.05.25
[백준/파이썬] #17836  (0) 2025.05.20
[백준/파이썬] #2469  (0) 2025.05.18