1. 문제
https://www.acmicpc.net/problem/1049
1049번: 기타줄
첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주
www.acmicpc.net
2. 풀이
import sys
input = sys.stdin.readline
# n : 필요한 기타줄 개수, m : 브랜드 개수
n, m = map(int, input().split())
# p_m_c : 패키지 최소 가격, s_m_c : 낱개 최소 가격
p_m_c, s_m_c = 1000, 1000
for i in range(m):
p_c, s_c = map(int, input().split())
p_m_c, s_m_c = min(p_m_c, p_c), min(s_m_c, s_c)
cnt = n // 6
# min_c : 최소 가격
min_c = 100001
for i in range(cnt+1):
min_c = min(min_c, (p_m_c * i) + (s_m_c * (n - (i * 6))))
min_c = min(min_c, (p_m_c * (cnt+1)))
print(min_c)
3. 후기
- 코드의 프로세스는 입력받는 패키지 가격, 낱개 가격의 최소를 구한 후 패키지, 낱개 개수별 가장 적은 가격을 구하는 방식으로 진행하였다. 당연히 맞을줄 알았지만 17프로 전에 틀렸습니다가 떠버렸다.
패키지 개수가 좀 남더라도 적은 가격이 나올 경우가 있는데 그 부분을 커버하지 못한 것이 그 이유였다.
알고리즘을 설계할 때 놓치는 부분이 발생하지 않도록 디테일한 부분까지 신경써서 코딩을 해보도록 하자.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - 링(3036) (0) | 2023.01.19 |
---|---|
(Python)백준 코딩테스트 연습 - 스위치 켜고 끄기(1244) (0) | 2023.01.19 |
(Python)백준 코딩테스트 연습 - 카드(11652) (0) | 2023.01.17 |
(Python)백준 코딩테스트 연습 - 국영수(10825) (0) | 2023.01.16 |
(Python)백준 코딩테스트 연습 - 비밀번호 찾기(17219) (0) | 2023.01.16 |