[백준] 암호 (1718)(kotlin)
문제 설명
입력 및 출력
» 입력
- 첫째 줄에 평문이, 둘째 줄에 암호화 키가 주어진다. 평문은 알파벳 소문자와 공백문자(space)로 만 구성되며, 암호화 키는 알파벳 소문자만으로 구성된다. 평문의 길이는 공백까지 포함해서 30000자 이하이다.
» 출력
첫 번째 줄에 암호문을 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
nice day love |
btgz oet |
문제 풀이1
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))) {
val password = readLine()
val key = readLine()
val bw = BufferedWriter(OutputStreamWriter(System.out))
val passwordLength = password.length
val keyLength = key.length
var passwordIdx = 0
var keyIdx = 0
while (passwordIdx < passwordLength) {
bw.write(passwordConverter(password[passwordIdx], key[keyIdx]))
passwordIdx++
keyIdx++
if (keyIdx > keyLength - 1) keyIdx = 0
}
bw.flush()
bw.close()
}
fun passwordConverter(pch: Char, kch: Char): String {
val pchInt = pch - 'a'
val kchInt = kch - 'a'
return when {
pch == ' ' -> " "
pchInt - kchInt > 0 -> {
('a' - 1 + pchInt - kchInt).toString()
}
pch - kch < 0 -> {
val q = kchInt - pchInt
('z' - q).toString()
}
else -> "z"
}
}