프로그래머스/파이썬_입문

종이 자르기

싱싱한복초이 2025. 1. 16. 09:56

https://school.programmers.co.kr/learn/courses/30/lessons/120922

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

[문제 설명]

머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다. 정수 MN이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 0 < M, N < 100
  • 종이를 겹쳐서 자를 수 없습니다.

 

[나의 풀이]

def solution(M, N):
    return (M*N)-1

 

[다른 풀이]

1) 

def solution(M, N):
    return M-1+M*(N-1)

M-1+M(N-1)을 풀어서 계산하면 결국(M*N)-1이 된다.

 

2)

def get_cut_cnt_dfs(width, height):
    width, height = min(width, height), max(width, height)

    if width == 1 and height == 1:
        return 0

    return 1 + get_cut_cnt_dfs(width, height//2) + get_cut_cnt_dfs(width, height-height//2)

def solution(M, N):
    return get_cut_cnt_dfs(M, N)

'프로그래머스 > 파이썬_입문' 카테고리의 다른 글

문자열 밀기  (1) 2025.01.17
연속된 수의 합  (0) 2025.01.16
다음에 올 숫자  (1) 2025.01.15
치킨 쿠폰  (0) 2025.01.15
이진수 더하기  (0) 2025.01.14