728x90
Key Point
Case 1: 5로 전부 나눠질 경우
Case 2: 3으로 전부 나눠질 경우
Case 3: 3과 5가 섞여서 나눠질 경우
Case 4: 나눠지지 않을 경우
맨 처음 5로 나눠지는 경우부터 처리
while 문에서 해당 조건문은 일단 맨처음 5로 나눈 몫을 통해 (전체 N에서 몫*5의값을 빼고) 그 값을 3으로 나눴을 때 나눠지면 깔끔하게 나눠지는 것으로 간주.
순차적으로 5로 나누었을 때 몫의 값을 1씩 빼며 3으로 나눠지는지 확인하는 로직이다.
if (N - numb*5) % 3 != 0:
1. 해당 조건문이 0이 될 경우
5kg와 3kg의 콜라보 가능 or 3kg 봉지로만 표현 가능
2. numb의 값(5로 나눴을 때 값)이 0이 될 때까지 3으로 나눠지지 않을 경우
print(-1)
import sys
N = int(sys.stdin.readline())
num1 = N % 5
numb = N // 5
if num1 == 0: #5로 나눴을 때
print(N // 5)
exit(0)
while True:
if (N - numb*5) % 3 != 0:
if numb == 0: #나눠지지 않을 경우
print(-1)
break
elif numb != 0: #3으로 나눠지지 않을 때 몫-1(numb-1) 하면서 3으로 나눠지는지 확인한다.
numb-=1
else:
print(numb + (N - (numb*5)) // 3) #3,5 섞여서 나눠질 경우 or 3으로만 나눠질 경우
break
728x90
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 4949번 python 풀이 - stack 개념 (0) | 2022.11.22 |
---|---|
[백준/BOJ] - 9012번 python 풀이 - stack 개념 (0) | 2022.11.22 |
[백준/BOJ] - 2164번 python 풀이 - deque 자료구조 사용 (0) | 2022.11.21 |
[백준/BOJ] - 1920번 python 풀이 - 이분 탐색(Binary Search) (1) | 2022.11.21 |
[백준/BOJ] - 11866번 python 풀이 (0) | 2022.11.20 |