[백준] 온라인 판매 (1246)

문제 설명

백준 1246번 문제 링크

입력 및 출력

» 입력

첫째 줄에 정수 N(1≤N≤1,000)과 M(1≤M≤1,000)이 입력된다. 둘째 줄부터 M+1번째 줄까지 i+1번째 줄에는 Pi(1≤Pi≤1,000,000)가 입력된다.

» 출력

첫째 줄에 경래가 책정한 가격과 이 가격으로 올릴 수 있는 수익을 출력한다.

예제 입출력(테스트케이스)

입력 출력
5 4
2
8
10
7
7 21

문제 풀이 (KOTLIN)

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val (N, M) = readLine().split(" ").map { it.toInt() }
    val buyer = MutableList(M) { readLine().toInt() }.sorted()
    var max = 0
    var maxUnitPrice = 0

    buyer.forEachIndexed { idx, price ->
        if (N >= M - idx) {
            val profit = price * (M - idx)
            if (profit > max) {
                max = profit
                maxUnitPrice = price
            }
        } else {
            val profit = price * N
            if (profit > max) {
                max = profit
                maxUnitPrice = price
            }
        }
    }

    println("$maxUnitPrice $max")

}

문제 풀이 (KOTLIN)

import kotlin.math.min

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val (N, M) = readLine().split(" ").map { it.toInt() }
    val buyer = MutableList(M) { readLine().toInt() }.sorted()
    var max = 0
    var unitPrice = 0

    buyer.forEachIndexed { idx, price ->
        val customers = min(N, M - idx)
        if (max < customers * price) {
            max = customers * price
            unitPrice = price
        }
    }

    println("$unitPrice $max")
}

문제 풀이 (SWIFT)

let NM = readLine()!.split(separator: " ").map { Int($0)! }
var customers = [Int]()

for _ in 0..<NM[1] {
    customers.append(Int(readLine()!)!)
}
customers.sort(by: <)

var ans = 0
var price = 0
for i in 0..<NM[1] {
    let eggs = min(NM[0], (NM[1] - i))
    let sales = eggs * customers[i]
    if ans < sales {
        ans = eggs * customers[i]
        price = customers[i]
    }
}

print(price, ans)

태그:

카테고리:

업데이트: