코딩 (독학)/★ Algorithm

[백준] 2480번 : 주사위 세개 - Kotlin [코틀린]

짱득이 2022. 4. 15. 19:39
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
반응형