[python] 백준 2839번

도덩이의 개발 일지·2024년 9월 6일

백준

목록 보기
66/131
post-thumbnail

안녕하세요 !

오늘은 백준 - 설탕 배달 문제를 가지고 왔습니다.


문제 설명

업로드중..


해결 방법

문제를 해결한 방법을 간략히 정리해보겠습니다.

  1. 입력 받는다.
  2. 반복문을 돌면서 50, 51 ... 0과 5의 배수를 입력 받은 수에서 빼고 카운트를 해줍니다.
  3. 만약 뺀 수가 음수이면 반복문을 종료합니다.
  4. 만약 뺀 수가 3을 나눈 나머지가 0이라면 카운트를 해주고 전체 카운트를 리스트에 저장합니다.
  5. 리스트에 요소가 하나 이상이라면 요소 중 가장 작은 요소를 출력합니다.
  6. 리스트에 요소가 없다면 -1을 출력합니다.

  1. 입력 받는다.
num = int(input())

  1. 반복문을 돌면서 50, 51 ... 0과 5의 배수를 입력 받은 수에서 빼고 카운트를 해줍니다.

카운트를 1씩 증가하는 것이 아닌 i만큼 해야합니다. 예를 들어 i가 2이면 5kg 봉지가 2개이기 때문입니다.

while 1:
    cnt = 0
    n = num
    cnt += i
    n -= (5*i)

  1. 만약 뺀 수가 음수이면 반복문을 종료합니다.
if n < 0:
    break

  1. 만약 뺀 수가 3을 나눈 나머지가 0이라면 카운트를 해주고 전체 카운트를 리스트에 저장합니다.

리스트는 배달하는 봉지의 개수를 저장합니다.

if n % 3 == 0:
    cnt += n // 3
    answer.append(cnt)

  1. 리스트에 요소가 하나 이상이라면 요소 중 가장 작은 요소를 출력합니다.
if len(answer):
    print(min(answer))

  1. 리스트에 요소가 없다면 -1을 출력합니다.
else:
    print(-1)

전체 코드

num = int(input())

answer = []

i = 0
n = 0
while 1:
    cnt = 0
    n = num
    cnt += i
    n -= (5*i)
    if n < 0:
        break
    if n % 3 == 0:
        cnt += n // 3
        answer.append(cnt)
    i += 1

if len(answer):
    print(min(answer))
else:
    print(-1)
profile
말하는 감자에서 개발자로 ( ´͈ ᵕ `͈ )◞♡

0개의 댓글