[백준] DNA 해독 (1672)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 염기 서열의 길이 N(1≤N≤1,000,000)이 주어진다. 둘째 줄에는 염기서열을 나타내는 길이가 N인 문자열이 주어진다.
» 출력
첫째 줄에 최종 염기를 출력한다.
예제 입출력(테스트케이스)
| 입력 | 출력 | 
|---|---|
| 6 AAGTCG  | 
      A | 
문제 풀이1
import java.io.BufferedReader
import java.io.InputStreamReader
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
    val table = arrayOf(
        charArrayOf('A', 'C', 'A', 'G'),
        charArrayOf('C', 'G', 'T', 'A'),
        charArrayOf('A', 'T', 'C', 'G'),
        charArrayOf('G', 'A', 'G', 'T')
    )
    var N = readLine().toInt()
    var dna = readLine()
    var prevChar = table[dnaIdx(dna[N - 1])][dnaIdx(dna[N - 2])]
    for (i in dna.length - 3 downTo 0) {
        prevChar = table[dnaIdx(prevChar)][dnaIdx(dna[i])]
    }
    println(prevChar)
}
fun dnaIdx(ch: Char): Int {
    return when(ch) {
        'T' -> 3
        'C' -> 2
        'G' -> 1
        else -> 0
    }
}