728x90
https://www.acmicpc.net/problem/14607
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)
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[Python] 1544번 사이클 단어 (0) | 2022.09.26 |
---|---|
[Python] 3709번 레이저빔은 어디로 (0) | 2022.09.26 |
[Python] 1246번 온라인 판매 (0) | 2022.09.26 |
[Python] 25371번 k진수 정수의 자릿수 나누기 (0) | 2022.09.21 |
[Python] 2669번 직사각형 네개의 합집합의 면적 구하기 (0) | 2022.09.21 |