[BOJ/백준][Bronze IV] 5543: 상근날드 (Kotlin)
https://www.acmicpc.net/problem/5543
5543번: 상근날드
입력은 총 다섯 줄이다. 첫째 줄에는 상덕버거, 둘째 줄에는 중덕버거, 셋째 줄에는 하덕버거의 가격이 주어진다. 넷째 줄에는 콜라의 가격, 다섯째 줄에는 사이다의 가격이 주어진다. 모든 가
www.acmicpc.net
문제
상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다.
햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다.
햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오.
입력
입력은 총 다섯 줄이다. 첫째 줄에는 상덕버거, 둘째 줄에는 중덕버거, 셋째 줄에는 하덕버거의 가격이 주어진다. 넷째 줄에는 콜라의 가격, 다섯째 줄에는 사이다의 가격이 주어진다. 모든 가격은 100원 이상, 2000원 이하이다.
출력
첫째 줄에 가장 싼 세트 메뉴의 가격을 출력한다.
풀이
햄버거 가격의 최솟값과 음료의 최솟값을 찾으면 가장 싼 세트 메뉴의 가격을 알 수 있다.
햄버거와 음료 가격을 리스트로 받아와서 최솟값을 반환하는 메서드를 사용하였다.
<코드1>
import java.util.*
fun main(args: Array<String>){
val sc: Scanner = Scanner(System.`in`)
var burger_list = ArrayList<Int>()
burger_list.add(sc.nextInt())
burger_list.add(sc.nextInt())
burger_list.add(sc.nextInt())
var burger_min = burger_list.minOrNull()!!
var juice_list = ArrayList<Int>()
juice_list.add(sc.nextInt())
juice_list.add(sc.nextInt())
var juice_min = juice_list.minOrNull()!!
val set_price = burger_min + juice_min - 50
println(set_price)
}
코드가 너무 정신없고 길어서 다음과 같이 수정하였다.
<코드2>
import java.util.*
fun main(args: Array<String>){
val sc: Scanner = Scanner(System.`in`)
var burger_list = ArrayList<Int>()
var juice_list = ArrayList<Int>()
for(i in 0..2){
burger_list.add(sc.nextInt())
}
for(i in 3..4){
juice_list.add(sc.nextInt())
}
println(burger_list.minOrNull()!! + juice_list.minOrNull()!! - 50)
}
[ GitHub ] : https://github.com/wldsbs/Algorithm/blob/main/BaekJoon/BOJ5543.kt
느낀점
오늘도 어김없이 컴파일에러가 났다...
입력받은 리스트 요소의 최솟값을 찾기위해 min() 메서드를 사용하였는데
error: unresolved reference: min
이런 컴파일에러가 발생하였다.
kotlin 공식 사이트에 찾아보니까 minOrNull()이라는 메서드가 있어서
min()을 minOrNull()!!로 수정하니까 정상적으로 실행이 되었다.
공식 홈페이지를 참고하는 것도 좋은 것 같다.
참고 : https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/min-or-null.html