출처 : https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
풀이:
n = int(input())
cnt =0
while n >= 0 :
if n%5 == 0:
cnt += n//5
print(cnt)
break
n -= 3
cnt += 1
else :
print(-1)
틀렸다~~~
케이스 계속 나누면서 if 에 if를 넣고 삼항연사자 넣고 또 if elif 넣으면 어거지로 풀리기는 할텐데 하다가
아니다 싶어서 풀이를 봤다.
문제 자체에서 요구하는건 일단 5kg짜리 봉지에 개수를 구하고 그 다음 3kg짜리가 얼마나 필요하냐 이다.
이걸 5의 배수와 3의 배수 이렇게 나눠서 생각하면 내가 틀린과정이 되므로 조금 사고를 다르게 해야한다.
예를 들어 21kg 가 있다면 결과적으로 5*3 + 3 *2 로 총 5개가 필요하다. 이를 조금 다르게 생각해보면 21 에서 3의 배수만큼 뺀 값이 5로 나누어 떨어지게 하면 되는 것이다.
따라서 21 - 6 = 15 -> 15/5 = 3 으로 3+2 = 5개를 구할 수 있다.
코드를 보면 if 문을 반복해 주기 위해 while을 사용했다.
만일 5로 나누어 떨어진다면 n//5 를 이용해 몫을 출력하고 멈춘다.
만일 5로 나누어 떨어지지 않았다면 3을 빼주고 3을 뺄 때마다 cnt 값은 하나씩 추가된다.
만일 3과 5로 다 담을 수 없다면 입력값이 3의 배수가 아니라는 뜻이고 이는 else 로 넘어가는 조건이 된다.
이때 -1을 출력하면서 정리할수 있따.
'코딩테스트 > 기초' 카테고리의 다른 글
백준 1978 소수찾기 - Python (3) | 2022.01.08 |
---|---|
백준 10757 큰 수 a+b -python (0) | 2022.01.08 |
백준 2775 부녀회장이 될거야 - python (0) | 2022.01.07 |
백준 10250 acm 호텔 - python (0) | 2022.01.07 |
백준 2869 달팽이는 올라가고 싶다. - python (0) | 2022.01.06 |