-
백준 1049 기타줄Algorithm/BOJ 2020. 6. 8. 16:18728x90
출처: 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