Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- dfs
- github
- guide
- C#
- 재귀
- w3school
- loop
- Algorithm
- UE5
- Tutorial
- 시작해요 언리얼 2022
- parameter
- 기초
- python
- Programming
- DP
- dynamic
- Class
- 백준
- String
- 오류
- 프로그래밍
- Basic
- W3Schools
- Unreal Engine 5
- 문제풀이
- Material
- 파이썬
- Unity
- c++
Archives
- Today
- Total
행복한 개구리
백준 21.12.07 2839번 - 설탕 배달 본문
n = int(input())
result = 0
while n >= 0:
if n % 5 == 0:
result += (n // 5)
print(result)
break
n -= 3
result += 1
else:
print(-1)
- 우선 5kg주머니로 담는게 주머니 수를 줄이는데 효과적이므로 분기를 먼저 작성해줍니다.
- 분기의 조건 (n % 5)인 이유는 앞서 말했듯 5kg주머니를 많이 사용하는 것이 효과적이므로 5로 나눌 수 있는 n의 가장 큰 수를 찾기 위함입니다.
- 하지만 5로 나누어지지 않는다며 3씩 빼며 주머니를 1씩 추가합니다.
- 3씩 빼다보면 n이 5에 나누어질수도 아닐수도 있는데, 5에 나누어질 경우엔 if문의 print에서 주머니 갯수가 출력될 것이고
- 5에 나누어지지 않을때 (1). 3으로 나누어진다면 (2). 3으로도 나누어지지 않는다면 이라는 두가지 분기가 존재합니다.
- (1)번 분기점에서는 n-=3을 반복하다가 n이 0이 되었을 때 if n % 5 == 0 조건에 True가 되어 print를 하게됩니다.
- 하지만 3으로 나누어지지 않는 (2)번 분기점에서는 나누어지지 않은 나머지(1 또는 2)를 n-=하는 과정에서 n은 0보다 작은 수가 되고 그에 따라 else문이 실행됩니다.
- 따라서 else문의 내용은 print(-1)입니다.
- => 3kg, 5kg주머니를 사용해도 남는 설탕 존재
- 그리고 //연산자는 나는 몫의 소숫점을 버리고 정수만 취하는 연산자입니다.
- math.floor과 같은 기능을 한다고 보면 될 것 같습니다.
'Algorithm > BaekJoon' 카테고리의 다른 글
백준 21.12.07. 1011번 - Fly me to the Alpha Cent (0) | 2021.12.07 |
---|---|
백준 21.12.07. 10757번 - 큰 수 A+B (0) | 2021.12.07 |
백준 21.12.06. 2775번 - 부녀회장이 될테야 (0) | 2021.12.06 |
백준 21.12.06. 10250번 - ACM호텔 (0) | 2021.12.06 |
백준 21.12.06. 2869번 - 달팽이는 올라가고 싶다 (0) | 2021.12.06 |