새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • til
  • portfolio
  • Github
  • 내일배움단
  • Selenium 4
  • 스파르타코딩클럽
  • 프로그래머스
  • docker
  • 코딩
  • 코딩프로젝트
  • AI트랙
  • TodayILearned
  • 내일배움카드
  • 자기주도학습
  • Python
  • machine learning
  • 코린이
  • 개발일지
  • 국비지원
  • 내일배움캠프

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

[백준_2839] 설탕 배달

2022. 4. 22. 02:36

문제 보기: 2839번: 설탕 배달 (acmicpc.net)

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

문제

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.

상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.

상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)

출력

상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.

 

새로 사용한 함수

qty = int(sys.stdin.readline().strip())

입력함수의 시간복잡도를 줄여주는 함수로 

import sys를 해서 사용할수 있으며 개행문자가 포함되기에 .strip()함수를 이용하여야한다.

 

풀이 과정

코드1

1. 입력값을 받는다 이때 받는 것은 stdin.readline을 사용하였다.

2. 5보다 작을때의 경우는 모두 예외처리 한다. 1, 2, 4

3. 이후에는 반복되는 경우라고 생각했고 반복되는 종류는

- 5로 나누어 떨어지는 경우 

- 입력값에 3 6 9 12를빼서 5로 나누어 떨어지는 경우

- 여기에 포함되지 않는 경우 로 나눠서 각자의 경우에 따라서 조건을 걸어줘서 처리합니다.

 

코드2

while 을 순회하면서 3씩 빼주고 5로 나누어봄 num이 -가 되면 -1을 반환

코드

코드1

# def delivery(qty):
import sys

qty = int(sys.stdin.readline().strip())

three_bag = 3
five_bag = 5
bag_qty = 0
# 3 6 9 12 15
# 5 10 15

if qty == 1 or qty == 2 or qty == 4:
    bag_qty = -1
    print(int(bag_qty))
elif qty == three_bag:
    bag_qty = 1
    print(int(bag_qty))
else:
    if qty % five_bag == 0:
        bag_qty = qty // five_bag
        print(int(bag_qty))
    elif (qty - (three_bag * 1)) % five_bag == 0:
        bag_qty = (qty - (three_bag * 1)) / five_bag + 1
        print(int(bag_qty))
    elif (qty - (three_bag * 2)) % five_bag == 0:
        bag_qty = (qty - (three_bag * 2)) / five_bag + 2
        print(int(bag_qty))
    elif (qty - (three_bag * 3)) % five_bag == 0:
        bag_qty = (qty - (three_bag * 3)) / five_bag + 3
        print(int(bag_qty))
    elif (qty - (three_bag * 4)) % five_bag == 0 and qty - (three_bag * 4) >= 0:
        bag_qty = (qty - (three_bag * 4)) / five_bag + 4
        print(int(bag_qty))
    else:
        bag_qty = -1
        print(int(bag_qty))


# tests = list(range(1, 101))
#
# for test in tests:
#     delivery(test)

  코드2

num = int(input())
count = 0

while num >= 0:
  if num % 5 == 0:
    count += int(num // 5)
    print(count)
    break
  
  num -= 3
  count += 1
  
else:
  print(-1)
저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[백준_1011] Fly me to the Alpha Centauri  (0) 2022.04.22
[백준_4948] 베르트랑 공준  (0) 2022.04.22
[백준_2480] 주사위 세개  (0) 2022.04.21
[백준_1316] 그룹 단어 체커  (0) 2022.04.21
[백준_2941] 크로아티아 알파벳  (0) 2022.04.21
    'Algorithm' 카테고리의 다른 글
    • [백준_1011] Fly me to the Alpha Centauri
    • [백준_4948] 베르트랑 공준
    • [백준_2480] 주사위 세개
    • [백준_1316] 그룹 단어 체커
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바