-
[백준] 1049 - 기타줄알고리즘 2023. 4. 20. 13:43728x90
1. 문제
https://www.acmicpc.net/problem/1049
1049번: 기타줄
첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주
www.acmicpc.net
2. 접근
1. m번동안 2개의 수들을 받는데, package 와 each (낱개) 로 구분해서 리스트에 넣어준다
2. n 의 개수가 6개 넘는지 넘지 않는지 먼저 확인해준다
3. 주의할점은 min(package) > min(each) * 6 이 가능하다는점을 고려해야 한다 ( 복사해서 에디터에 넣었을때 21번줄 )
위 3번만 조심한다면 사고의 흐름대로 코드를 짜면 쉽게 풀수있다.
3. 풀이
import sys input = sys.stdin.readline n,m = map(int,input().split()) package = [] each = [] for i in range(m): a,b = map(int,input().split()) package.append(a) each.append(b) mPack = min(package) mEach = min(each) def count(n,pack,each): cost = 0 while n > 0: if n >= 6: if pack * (n//6) >= each * 6 * (n//6): cost += (each * n) break else: cost += pack * (n//6) n -= 6 * (n//6) else: if pack <= each * (n%6): cost += pack else: cost += each * (n%6) n = 0 return cost cost = count(n,mPack,mEach) print(cost)
'알고리즘' 카테고리의 다른 글
[백준] 1051 - 숫자 정사각형 (0) 2023.05.08 [백준] 1080 - 행렬 (1) 2023.05.08 [백준] 1389 - 케빈 베이컨의 6단계 법칙 (0) 2023.04.14 [백준] 2417 - 정수 제곱근 (0) 2023.04.09 [백준] 1654 - 랜선 자르기 (0) 2023.04.09