홍우진의 개발 일기장

[백준] 1049번: 기타줄/ 파이썬 본문

알고리즘/백준

[백준] 1049번: 기타줄/ 파이썬

홍우진 2022. 7. 25. 00:00
728x90
반응형

우연히 옛날에 내가 풀었던 문제를 다시 보게 되었는데

풀이 방법이 기억이 하나도 나지 않았다.

애초에 이 문제를 풀었었던 기억조차 나지 않았다.

심지어 내가 블로그 포스팅한 기록을 봐도 기억이 나지 않았다.

 

그래서 나는 포스팅 방식을 공부에 도움이 더 되는 방향으로 바꾸기로 하였다. 

문제 설명과 답만 포스팅하는 방식에서 

간단한 문제 링크와 풀이 코드, 코드 해석을 포스팅하는 방식으로 바꾸기로 하였다.

 

복습하는데도 훨씬 도움이 되고

답만 적어놓는 방식보다 남에게 설명하듯이 기재하며 내 생각을 다시 정리할 수 있을 것 같다.

 

사실 다른 블로거들은 대부분 이 방식을 사용하고 있었지만 나만 몰랐던 것 같다 😑

 

문제 링크


https://www.acmicpc.net/problem/1049

 

1049번: 기타줄

첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주

www.acmicpc.net

풀이 코드


n,m = map(int,input().split(' '))

s = list()
o = list()

for _ in range(m):
    a,b = input().split(' ')
    s.append(int(a))
    o.append(int(b))

s = min(s)
o = min(o)

if s < o * 6:
    if s < (n % 6) * o:
        print((n // 6) * s + s)
    else:
        print((n // 6) * s + (n % 6) * o)

elif s >= o * 6:
    print(n * o)

코드 해석


map() 을 사용하여 개수와 브랜드를 int로 저장한다.

세트 가격을 s, 하나 당 가격을 o 에 리스트 형식으로 저장한다.

min() 을 이용하여 가장 작은 값을 도출한다.

세트는 6개이기 때문에 가격 비교를 위하여 6개를 기준으로 잡는다.

세트가 더 싼 경우 (n // 6) * s + s,

낱개가 더 저렴한 경우 (n // 6) * s + (n % 6) * o,

낱개 6개 가격이 패키지랑 같거나 더 저렴한 경우 n * s 로 계산한다.

728x90
반응형
Comments