내코드
def solution(M, N):
return min(M, N) - 1 + min(M, N) * (max(M, N) - 1)
코드설명
이 코드는 종이를 최소한으로 자르기 위한 수식을 기반으로 동작합니다.
- min(M, N) - 1 부분은 더 짧은 변에서의 가위질 횟수를 의미합니다.
- min(M, N) * (max(M, N) - 1) 부분은 나머지 긴 변에서의 가위질 횟수를 계산합니다.
- 이를 더해 전체 가위질 횟수를 계산합니다.
특징
- 직관적으로 행과 열을 나누어 생각하는 방식입니다.
- 시간복잡도는 O(1)로, 입력 크기에 상관없이 일정한 시간이 소요됩니다.
다른 코드
def solution(M, N):
return (M * N) - 1
코드설명
이 코드는 간단하게 MxN 크기의 종이를 1x1 크기로 만들기 위해 필요한 가위질 횟수를 직접 계산합니다.
- 전체 칸 수는 M * N입니다.
- 1x1 크기 종이를 만들기 위해선 M*N - 1번의 가위질이 필요합니다.
특징
- 매우 간단하고 명료한 수식입니다.
- 연산이 한 줄로 끝나서 직관적이고 빠릅니다.
- 시간복잡도는 O(1)로, 효율적입니다.
두 코드 비교
- 내 코드는 행과 열을 따로 나누어 직관적으로 계산하는 방식입니다. 가위질 과정이 좀 더 구체적으로 표현됩니다.
- 다른 코드는 가위질 횟수를 한 번의 곱셈과 뺄셈으로 처리해 간결합니다.
두 코드 모두 시간복잡도는 O(1)로 동일하지만, 다른 코드가 더 간단하고 직관적이기 때문에 가독성이 뛰어납니다.
결론
- 두 코드 모두 문제를 해결하는 데 문제가 없으며, 효율성에서도 차이가 없습니다.
- 그러나 다른 코드가 더 간단하고 유지 보수하기 쉽기 때문에 해당 코드가 추천됩니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 | Python | 치킨 쿠폰 (1) | 2025.01.08 |
---|---|
프로그래머스 | Python | 저주의 숫자 3 (0) | 2025.01.07 |
프로그래머스 | Python | 다항식 더하기 (1) | 2024.12.26 |
프로그래머스 | Python | 캐릭터의 좌표 (2) | 2024.12.24 |
프로그래머스 | Python | 로그인 성공? (0) | 2024.12.23 |