본문 바로가기

알고리즘/백준 문제 풀이

[Python] 14607번 피자 (Large)

728x90

https://www.acmicpc.net/problem/14607

 

 

14607번: 피자 (Large)

예제1의 입력이 1이므로, 게임 시작부터 갑이 분리할 수 있는 피자탑이 없습니다. 따라서 갑이 얻는 즐거움은 0입니다. 예제2의 정답 3은 다음과 같은 과정을 통해 얻어집니다. 먼저 놀이를 시작

www.acmicpc.net


 

22/09/10

 

 

마찬가지로 그룹 연습에서 풀었던 문제이다. 규칙을 찾아서 풀었으며, 굉장히 쉬웠다.


 

문제 접근 방식:

 

 

문제 풀 땐 그냥 나열해서 규칙 찾아서 풀었다.

 

그 식은 바로 $\frac{n(n-1)}{2}$였다.

 

근데 정당화를 해봐야 했었다.

 

결론만 이야기 하자면 어떻게 피자판을 쪼개든 항상 값은 같게 나온다.

 

예를 들어, $n$인 피자판을 $k$와 $n-k$로 쪼갠다고 해보자.

 

그리고 수학적 귀납법을 적용해보면, $[k(k-1) + (n-k)(n-k-1)]/2 + k(n-k)$ $=$ $[k^2 - k + n^2 - nk - n - kn + k^2 + k]//2 + [2nk - k^2]//2$ $=$ $(n^2 - n)//2$ $=$ $n(n-1)//2$가 나오기 때문이다.

 


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.

더보기
# 14607번 피자 (Large)
n = int(input())
print(n*(n-1)//2)