[백준] 저항 (1076)

문제 설명

백준 1076번 문제 링크

입력 및 출력

» 입력

첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 색은 모두 위의 표에 쓰여 있는 색만 주어진다.

» 출력

입력으로 주어진 저항의 저항값을 계산하여 첫째 줄에 출력한다.

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

입력 출력
yellow
violet
red
4700

문제 풀이 (KOTLIN)

import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.pow

fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
    var resistance: String = ""

    repeat(3) {
        if (it in 0..1) {
            resistance += rValue(readLine())
        } else {
            println(
                resistance.toInt() *
                    (10.0).pow(rValue(readLine())).toLong()

            )
        }
    }
}

fun rValue(str: String): Int {
    return when (str) {
        "black" -> 0
        "brown" -> 1
        "red" -> 2
        "orange" -> 3
        "yellow" -> 4
        "green" -> 5
        "blue" -> 6
        "violet" -> 7
        "grey" -> 8
        else -> 9
    }
}

문제 풀이 (SWIFT)

var r = ""

for i in 0...2 {
    if i == 2 {
        r += String(repeating: "0", count: resistance(r: readLine()!))
    } else {
        r += String(resistance(r: readLine()!))
    }
}

print(Int(r)!)

func resistance(r: String) -> Int {
    switch r {
    case "black": return 0
    case "brown": return 1
    case "red": return 2
    case "orange": return 3
    case "yellow": return 4
    case "green": return 5
    case "blue": return 6
    case "violet": return 7
    case "grey": return 8
    default: return 9
    }
}

문제 풀이 (SWIFT)

let mapping = ["black": 0, "brown": 1, "red": 2, "orange": 3, "yellow": 4, "green": 5, "blue": 6, "violet": 7, "grey": 8, "white": 9]

var a = ""
var b = ""
var c = ""

if let input = readLine() { a = input }
if let input = readLine() { b = input }
if let input = readLine() { c = input }

let res = ((mapping[a] ?? 0) * 10) + (mapping[b] ?? 0)
print(
    (0..<mapping[c]!).reduce(res) { (result: Int, _: Int) -> Int in
        result * 10
    }
)