문제
n개의 사탕을 세 사람이 나누기 위한 규칙은 다음과 같다.
- 남는 사탕은 없어야 한다.
- 남규는 영훈이보다 2개 이상 많은 사탕을 가져야 한다.
- 셋 중 사탕을 0개 받는 사람은 없어야 한다.
- 택희가 받는 사탕의 수는 홀수개가 되어서는 안 된다.
이 규칙을 따를 때 사탕을 세 사람에게 분배하는 서로 다른 경우의 수를 세보자.
풀이
택희, 영훈이, 남규의 사탕 수를 각각 a, b, c로 둔다.
택희는 2 이상의 짝수 개를 받으므로 for문의 범위를 range(2, n+1, 2)로 둔다.
이때 n을 포함하기 위해 n+1로 설정했지만 사실상 0개를 받는 사람은 없으므로 n으로 두어도 상관없다.
영훈이는 0개 이상, 남규는 영훈이보다 2개 이상을 받아야 하므로 영훈이의 범위는 range(1, n-a+1)로 둔다.
이때 n-a+1 대산 n-a로 두어도 된다.
이제 남규의 사탕 수를 구할 차례이다.
남은 사탕 수는 n-a-b이고 이 값은 b(영훈)+2보다 크거나 같아야 한다. 이 조건을 만족하면 cnt에 1을 더해준다.
중첩 for문이 끝나고 cnt에 저장된 값이 우리가 원하는 값이다.
맨 처음에 cnt=0으로 설정했으므로 규칙에 맞게 사탕을 분배할 수 없을 때 0을 출력하게 된다.
코드
n=int(input())
cnt=0
for a in range(2, n+1, 2):
for b in range(1, n-a+1):
if n-a-b>=b+2: cnt+=1
print(cnt)
'BOJ > Python' 카테고리의 다른 글
[BOJ/백준] 1837 - 암호제작 (Python) (0) | 2025.05.29 |
---|---|
[BOJ/백준] 3062 - 수 뒤집기 (Python) (0) | 2025.05.25 |
[BOJ/백준] 6131 - 완전 제곱수 (Python) (0) | 2025.05.23 |
[BOJ/백준] 9550 - 아이들은 사탕을 좋아해 (Python) (0) | 2025.05.21 |
[BOJ/백준] 16673 - 고려대학교에는 공식 와인이 있다 (Python) (0) | 2025.05.21 |