[백준] 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
}
}