백준 14568 사탕 파이썬 문제풀이 (python 완전탐색, 2017 연세대학교 프로그래밍 경시대회)

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
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유