홍우진의 개발 일기장
[백준] 1049번: 기타줄/ 파이썬 본문
728x90
반응형
우연히 옛날에 내가 풀었던 문제를 다시 보게 되었는데
풀이 방법이 기억이 하나도 나지 않았다.
애초에 이 문제를 풀었었던 기억조차 나지 않았다.
심지어 내가 블로그 포스팅한 기록을 봐도 기억이 나지 않았다.
그래서 나는 포스팅 방식을 공부에 도움이 더 되는 방향으로 바꾸기로 하였다.
문제 설명과 답만 포스팅하는 방식에서
간단한 문제 링크와 풀이 코드, 코드 해석을 포스팅하는 방식으로 바꾸기로 하였다.
복습하는데도 훨씬 도움이 되고
답만 적어놓는 방식보다 남에게 설명하듯이 기재하며 내 생각을 다시 정리할 수 있을 것 같다.
사실 다른 블로거들은 대부분 이 방식을 사용하고 있었지만 나만 몰랐던 것 같다 😑
문제 링크
https://www.acmicpc.net/problem/1049
풀이 코드
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
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 17219번: 비밀번호 찾기/ 파이썬 (0) | 2022.07.26 |
---|---|
[백준] 1302번: 베스트셀러/ 파이썬 (2) | 2022.07.25 |
[백준] 11723번: 집합/ 파이썬 (0) | 2022.07.23 |
[백준] 1094번: 막대기/ 파이썬 (0) | 2022.07.23 |
[백준] 1475번: 방 번호/ 파이썬 (0) | 2022.07.23 |
Comments