본문 바로가기

Python(알고리즘,문제풀이)/BOJ(Silver IV)

***백준 / 2839번 / 설탕 배달 / Python / 그리디 알고리즘 ***

728x90

📚문제

출처 : 백준 2839번(https://www.acmicpc.net/problem/2839)


📝풀이

# 2839번 설탕 배달(Silver IV)
n = int(input())
cnt = 0

while n >=0:
    if n %5==0:
        cnt += (n//5)
        print(cnt)
        break
    else:
        n -= 3
        cnt += 1
else:
    print(-1)

백준 질문 게시판에 있는 코드들은

직관적으로 알아보기 힘들어서

구글링 하다가 발견한 간단한 코드

 

우선 5로 나누어 떨어지지 않는 숫자라면

cnt(설탕 봉지 수) +=1과 함께 -3을 해준다

이렇게 3을 빼주다 보면 5로 나누어떨어지는 수가 될수도 있다

 

만약 n이 3의 배수라면 (ex 9)

3을 3번 빼주는 것(cnt=3)

과 3으로 3번 나눈 몫이 동일하기 때문에 정답이 된다

 

그리고 4나 7처럼 

5의배수도 아니고 -3을 계속 해주어도 5의 배수가 나오지 않는 경우는 결국

n이 0보다 작아져서(음수)

while~else문 조건에 의해

print(-1)을 출력

 

이렇게 구글링하여 참고한 문제는

당장 이해는 되지만

또 풀려고 하면

까먹으니까

나중에 다시 풀어봐야겠다...🧐

 

728x90