ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1049 기타줄
    Algorithm/BOJ 2020. 6. 8. 16:18
    728x90

    출처: www.acmicpc.net/problem/1049

    분류: 그리디


    접근방식

    패키지와 낱개의 가격이 주어지고 고장난 기타줄 이상을 살 수 있는 최소가격을 구하는 문제입니다.

    최소 가격을 구하는 문제이므로 패키지와 낱개 각각의 최소값에만 신경쓰면 됩니다.

    동전나누기와 비슷하죠? 낱개 6개 가격이 패키지 가격보다 싸지만 않다면

    패키지만큼 다 나눠주고 나머지랑 패키지랑 비교해서 풀면 됩니다.

     

    해결방법

    let n = readLine()!.split(separator: " ").map{Int($0)!}
    
    var minPackage = Int.max
    var minPiece = Int.max
    for _ in 0..<n[1] {
        let inputs = readLine()!.split(separator: " ").map{Int($0)!}
        minPackage = min(minPackage, inputs[0])
        minPiece = min(minPiece, inputs[1])
    }
    
    if minPackage > minPiece * 6 {
        print(n[0] * minPiece)
    } else {
        var total = 0
        let packageCount = n[0] / 6
        let pieceCount = n[0] % 6
        
        total += packageCount * minPackage
        
        if pieceCount * minPiece > minPackage {
            total += minPackage
        } else {
            total += pieceCount * minPiece
        }
        
        // n[0]/6 * minPackage + min(minPackage, pieceCount * minPiece)
        print(total)
    }

     

    주석에 적은 방법처럼 보다 간단하게도 해결할 수 있겠습니다.

    감사합니다 :)

     

    'Algorithm > BOJ' 카테고리의 다른 글

    BOJ 2352 반도체 설계  (0) 2020.06.12
    BOJ1080 행렬  (0) 2020.06.11
    백준 1946 신입 사원  (2) 2020.06.08
    백준 1120 문자열  (0) 2020.06.08
    백준 1541 잃어버린 괄호  (0) 2020.06.07

    댓글

Designed by Tistory.