백준
1049번 기타줄
판다꼬마
2022. 3. 11. 22:21
728x90
https://www.acmicpc.net/problem/1049
내 풀이
a,b=map(int, input().split())
multi_list=list()
single_list=list()
for i in range(b):
z,y=(map(int, input().split()))
multi_list.append(z)
single_list.append(y)
c=min(multi_list)
d=min(single_list)
result=0
if c>d*6:
result=d*6
elif c<(a%6)*d:
result=c*(a//6)+c
else:
result=c*(a//6)+d*(a%6)
print(result)
해결 방법
경우의 수를 3가지로 나누어 생각했다.
1번:
6개짜리 패키지가 각각의 낱개를 살 때보다 가격이 비싸면
낱개로만 사면된다.
2번:
6개까지 패키지의 가격이 6개짜리 묶음을 사고 남는 나머지*낱개의 가격보다 싼 경우
패키지를 사고 남는 낱개도 패키지를 하나 더 산다.
3번:
나머지 경우
패키지를 사고 남는 낱개는 낱개로 산다.
구글 풀이
n,m=input().split(' ')
n=int(n)
m=int(m)
c=list()
d=list()
for i in range(m):
a,b=input().split(' ')
c.append(int(a))
d.append(int(b))
e=min(c)
f=min(d)
if e<f*6:
if e <(n%6)*f:
print((n//6)*e+e)
else:
print((m//6)*e+(n%6)*f)
elif e>=f*6:
print(n*f)
느낀 점
어렵다ㅜㅜ
728x90