300x250
반응형
- 문제
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net
- 알고리즘
1. 같은 눈이 3개인 경우
연산 : 10000 + (같은 눈) * 1000
2. 같은 눈이 2개인 경우
연산 : 1000 + (같은 눈) * 100
3. 모든 눈이 다른 경우
연산 : (같은 눈) * 100
- 풀이
- 내가 작성한 코드
import java.util.Scanner
import java.util.Random
import java.util.Collections
// import java.util.*
fun main() = with(Scanner(System.`in`)) {
val a = nextInt()
val b = nextInt()
val c = nextInt()
val nums=listOf(a, b, c)
if(a==b && b==c) {
println("${10000+(a*1000)}")
} else if (a==b && b!=c) {
println("${1000+(a*100)}")
} else if (a!=b && b==c) {
println("${1000+(c*100)}")
} else if (a==c && b!=c) {
println("${1000+(c*100)}")
} else if (a!=b && b!=c && a!=c) {
println("${Collections.max(nums)*100}")
}
}
그냥 1차원적으로 생각한 풀이이다.
주어진 3개 수를 nextInt( )로 받았고, 조건 그대로 if 조건문을 작성하여 조건에 맞게 연산 해 주었을 뿐이다.
맨 아래 조건문에서는 3개 수가 모두 다를 때의 연산인데, 값중에서 가장 큰 값을 뽑아야해서 Kotlin에서도 사용이 가능한 Colletcion을 사용하여 .max( ) 를 뽑아내었다. 중요한건 listOf로 3개 수를 모두 담아서 넣어주었다.
사실 이렇게 안하고 아래처럼 해도 될 듯 하다.
import java.math.*
fun main() : Unit {
val nums=listOf(a, b, c)
if(a!=b && b!=c && c!=a) {
println("${max(nums)*100}")
}
}
콜렉션을 사용하지 않고 math 클래스에서 가져온 max( )이다. 뭐.. 그냥 편한대로 기억 나는대로 사용하면 될 듯 하다 ㅎㅎ
- 결과
이게 무슨일이당가.. 드디어 처음으로 원테이크에 간단하게 끝냈다.. 너무 즐겁구만 ㅎㅎ
728x90
반응형
'코딩 (독학) > ★ Algorithm' 카테고리의 다른 글
[백준] 2741번 : N찍기 - Kotlin [코틀린] (0) | 2022.04.19 |
---|---|
[백준] 15552번 : 빠른 A+B - Kotlin [코틀린] (0) | 2022.04.15 |
[백준] 2884번 : 알람 시계 - Kotlin [코틀린] (0) | 2022.04.11 |
[백준] 2588번 : 곱셈 - Kotlin [코틀린] (0) | 2022.04.06 |
[Kotlin Algorithm] 코틀린 알고리즘 문제풀이 TIP ! (0) | 2022.04.06 |