[백준] 문어 숫자 (1864)(kotlin)

문제 설명

백준 1864번 문제 링크

입력 및 출력

» 입력

한 줄에 하나씩 문어 숫자가 입력으로 주어진다. 각 숫자는 최소 한 개, 최대 여덟 개의 문어 숫자 기호로 이루어져있다. 입력으로 ‘#’이 들어오면 입력을 종료한다.

» 출력

입력 받은 문어 숫자에 대응하는 십진수를 한 줄에 하나씩 출력한다.

예제 입출력

입력 출력
(@&
?/--
/(<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()
    }
}