[C++] 백준 1049번 풀이 (기타줄)

정민경·2023년 2월 20일
0

baekjoon

목록 보기
33/57
post-thumbnail

- 문제 (1049번) : 기타줄

  • 끊어진 기타줄들을 교체할 때 가장 저렴하게 교체하는 가격을 구하는 문제

- 입력 및 출력

[ 입력 ]

  • 첫째 줄에 끊어진 기타줄 N과 기타줄 브랜드 수 M 입력
  • 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격 입력

    [ 입력의 제한 ]

    • N ≤ 100 , M ≤ 50 , N과 M은 자연수
    • 0 ≤ 각 브랜드의 패키지 및 낱개의 가격 ≤ 1,000 , 정수

[ 출력 ]

  • 적어도 N개의 기타줄을 사기 위해 필요한 돈의 최솟값 출력

- 문제 풀이

  • 이번 문제는 set으로 사는것과 낱개로 사는 것 중 어느것이 저렴한지 구하는 문제이다.

  • 입력으로 받는 값 중에서 우리가 필요한 값은 딱 두가지이다.

    1. 패키지 가격 중 가장 저렴한 값
    2. 낱개 가격 중 가장 저렴한 값

    따라서 각 브랜드별로 가격을 입력받을 때 min 함수를 사용해 가장 저렴한 값만 먼저 찾는다.

  • 이렇게 저렴한 값을 찾았으면 패키지로만 구입할건지, 낱개로만 구입할건지 패키지와 낱개를 섞어 구매할 건지 나눠 계산하면 된다.

    1. 패키지로만 구입하는 경우
      • ( N / 6 + 1 ) 개 x 패키지 가격
    1. 낱개로만 구입하는 경우
      • N 개 x 낱개 가격
    1. 패키지 + 낱개로 구입하는 경우
      • ( N / 6 개 x 패키지 가격 ) + ( N % 6 개 x 낱개 가격 )
  • 위와 같은 3가지 경우로 전부 가격을 구해 가장 저렴한 가격을 출력하면 문제 해결


- 최종 코드

0개의 댓글