개발 · 컴퓨터공학/알고리즘
백준 14568 사탕 파이썬 문제풀이 (python 완전탐색, 2017 연세대학교 프로그래밍 경시대회)
막
2024. 8. 3. 09:00
728x90
반응형
백준 14568 사탕 문제
사탕을 나누는 문제이다. 세 명이 사탕을 나누어 받는데 다음 조건을 고려한다.
- 남는 사탕은 없어야 한다.
- 남규는 영훈이보다 2개 이상 많은 사탕을 가져야 한다.
- 셋 중 사탕을 0개 받는 사람은 없어야 한다.
- 택희가 받는 사탕의 수는 홀수개가 되어서는 안 된다.
단순히 생각하자.
삼중 반복문으로 하나씩 케이스를 돌려 보면서 다음 조건을 모두 만족하는 경우를 찾아서 카운트를 세는 거다.
사탕의 개수 N은 100이 최대이고, 삼중으로 반복해도 1,000,000 이므로 1초가 안된다.
candy = int(input())
cnt = 0
for a in range(1, candy-2 + 1): # taqui
for b in range(1, candy-2 + 1): # yeonghun
for c in range(1, candy-2 + 1): # namgyu
if a+b+c != candy:
continue
if c != 2 + b:
continue
if a % 2 == 1:
continue
cnt+=1
print(cnt)
위 그대로 코드를 작성하면 이렇다.
틀렸다.
조건을 다시 보다가 빠뜨린 부분을 찾았다.
남규는 영훈이보다 2개 이상 많은 사탕을 가져야 한다.
2개가 딱 많은게 아니라 2개 이상이었다...
candy = int(input())
cnt = 0
for a in range(1, candy-2 + 1): # taqui
for b in range(1, candy-2 + 1): # yeonghun
for c in range(1, candy-2 + 1): # namgyu
if a+b+c != candy:
continue
if c < 2 + b: # 수정
continue
if a % 2 == 1:
continue
cnt+=1
print(cnt)
해당 조건을 수정해서 제출했더니
맞았다.
728x90
반응형