Kotlin/Kotlin 알고리즘

백준 1076번 저항 Kotlin 구현해보기

kimc 2022. 11. 19. 17:35

```

백준 1076번 저항 Kotlin 구현해보기

```

Kimc Kotlin Study

이번 글을 통해 배워갈 내용

  1. 백준 1076번 풀이

https://www.acmicpc.net/problem/1076

 

1076번: 저항

첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다.

www.acmicpc.net

백준 1076번 저항은

난이도 브론즈 등급의 문제로서

 

처음 두 개의 색은 저항의 값

나머지 한 개의 색은 곱해야 하는 값으로 쓰고

 

해당 표를 참조해서 맵핑만 하면 되는 문제입니다.

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


입력을 받고

정해진 조건에 맞춰서 계산을 해서 출력해주면 되는

문제입니다.

스위치를 써서 해결하였습니다

 

fun main(args: Array<String>) {
    // input
    val f1 = readln()
    val f2 = readln()
    val f3 = readln()
    // output
    print(solution(f1, f2, f3))
}

const val kBlack = "black"
const val kBrown = "brown"
const val kRed = "red"
const val kOrange = "orange"
const val kYellow = "yellow"
const val kGreen = "green"
const val kBlue = "blue"
const val kViolet = "violet"
const val kGrey = "grey"
const val kWhite = "white"


fun findResistanceVal(color: String): Long {
    return when (color) {
        kBlack -> 0L
        kBrown -> 1L
        kRed -> 2L
        kOrange -> 3L
        kYellow -> 4L
        kGreen -> 5L
        kBlue -> 6L
        kViolet -> 7L
        kGrey -> 8L
        kWhite -> 9L
        else -> {
            -1L
        }
    }
}

fun findResistanceMul(color: String): Long {
    return when (color) {
        kBlack -> 1L
        kBrown -> 10L
        kRed -> 100L
        kOrange -> 1000L
        kYellow -> 10000L
        kGreen -> 100000L
        kBlue -> 1000000L
        kViolet -> 10000000L
        kGrey -> 100000000L
        kWhite -> 1000000000L
        else -> {
            -1L
        }
    }
}

fun solution(f1: String, f2: String, f3: String): Long {
    return (findResistanceVal(f1) * 10 + findResistanceVal(f2)) * findResistanceMul(f3)
}


// https://codemasterkimc.tistory.com/

 

테스트

import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

internal class MainKtTest {

    @Test
    fun test() {
        assertEquals(4700, solution("yellow", "violet", "red"))
        assertEquals(32000000, solution("orange", "red", "blue"))
        assertEquals(99000000000, solution("white", "white", "white"))
    }
}

 

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90