[백준] 문어 숫자 (1864)(kotlin)
문제 설명
입력 및 출력
» 입력
한 줄에 하나씩 문어 숫자가 입력으로 주어진다. 각 숫자는 최소 한 개, 최대 여덟 개의 문어 숫자 기호로 이루어져있다. 입력으로 ‘#’이 들어오면 입력을 종료한다.
» 출력
입력 받은 문어 숫자에 대응하는 십진수를 한 줄에 하나씩 출력한다.
예제 입출력
입력 | 출력 |
---|---|
(@& ?/-- /(<br>? # |
158 1984 -47 4 |
문제 풀이1
import java.io.BufferedReader
import java.io.InputStreamReader
import kotlin.math.pow
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
var next = readLine()
while (next[0] != '#') {
println(
next.mapIndexed { index, char ->
when (char) {
'-' -> 0 * 8.0f.pow(next.length - index - 1)
'\\' -> 1 * 8.0f.pow(next.length - index - 1)
'(' -> 2 * 8.0f.pow(next.length - index - 1)
'@' -> 3 * 8.0f.pow(next.length - index - 1)
'?' -> 4 * 8.0f.pow(next.length - index - 1)
'>' -> 5 * 8.0f.pow(next.length - index - 1)
'&' -> 6 * 8.0f.pow(next.length - index - 1)
'%' -> 7 * 8.0f.pow(next.length - index - 1)
else -> (-1.0f) * 8.0f.pow(next.length - index - 1)
}
}.sum().toInt()
)
next = readLine()
}
}