[백준] 저항 (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
}
)