4378번: 트ㅏㅊ;백준/문제2024. 5. 24. 01:22
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/4378
언어 : Kotlin
문제 설명 :
가끔, 그러나 때때로, 우리들은 키보드에서 양손을 오른쪽으로 한 칸씩 이동한 상태로 두고 타자를 치는 경우가 있다. 즉, "ACMICPC.NET"을 위와 같은 방법으로 치게 되면 "SV,OV[V/MRY"이라는 이상한 문장을 보게 된다.
교준이는 장문을 쓰는데, 너무 급한 나머지 위와 같은 오류를 범한 채로 글을 완성해 버렸다. 이 글을 다시 쓰는 것은 교준이에게는 너무 힘든 일이다. 교준이를 대신해서 오류를 고쳐주자.
입력 :
입력은 여러 줄로 이루어진다. 각 줄은 숫자나 공백, 알파벳 대문자, 위의 키보드에 표시되어 있는 문장 부호로 이루어져 있다. Q, A, Z나 `(back-quote), 단어로 이루어진 키(Tab, BackSp, Control 등)는 입력의 각 줄에 포함되지 않는다. 예외적으로 공백(' ', SpaceBar)은 입력으로 들어올 수 있는데, 스페이스 바는 너무 길어서 교준이가 위의 오류를 범하지 않는다.
출력 :
각 줄마다 오류를 고쳐 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
O S, GOMR YPFSU/ | I AM FINE TODAY. |
풀이 :
어려운 문제가 아닌데 시도를 좀 많이 했다.
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val rule = arrayOf(
arrayOf('`', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '='),
arrayOf('Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', '[', ']', '\\'),
arrayOf('A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ';', '\''),
arrayOf('Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/')
)
while (true) {
val sb = StringBuilder()
val input = readLine() ?: break
if (input.isEmpty()) {
sb.append("\n\n")
} else {
input.forEach {
val idx: Int
when (it) {
in rule[0] -> {
idx = rule[0].indexOf(it) - 1
sb.append(rule[0][if (idx == -1) 0 else idx])
}
in rule[1] -> {
idx = rule[1].indexOf(it) - 1
sb.append(rule[1][if (idx == -1) 0 else idx])
}
in rule[2] -> {
idx = rule[2].indexOf(it) - 1
sb.append(rule[2][if (idx == -1) 0 else idx])
}
in rule[3] -> {
idx = rule[3].indexOf(it) - 1
sb.append(rule[3][if (idx == -1) 0 else idx])
}
else -> {
sb.append(" ")
}
}
}
sb.append("\n")
}
bw.write(sb.toString())
bw.flush()
}
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
1593번: 문자 해독 (0) | 2024.05.24 |
---|---|
2037번: 문자메시지 (0) | 2024.05.24 |
31495번: 그게 무슨 코드니.. (0) | 2024.05.23 |
16499번: 동일한 단어 그룹화하기 (0) | 2024.05.23 |
1411번: 비슷한 단어 (0) | 2024.05.23 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!