4583번: 거울상백준/문제2024. 7. 12. 03:06
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/4583
언어 : Kotlin
문제 설명 :
소문자 b와 d나 p와 q는 서로 거울상 관계이다. 또한 i,o,v,w와 x는 모두 자신과 거울상 관계이다. 이 외에도 몇 가지 거울상 관계인 문자들이 존재하지만, 이 문제에서는 위에서 언급한 문자들만 거울상 관계로 생각하도록 하자.
이러한 대칭성으로 인해 위의 문자들로 이루어진 단어들은 거울에 비친 모습을 보고 거울에 반사되기 전 모습을 유추하는 것이 가능하다. 예를들어, 'boxwood'는 반사되기 전 'boowxod', 'ibid'는 반사되기 전 'bidi'라는 단어일 것이다. 몇 단어들이 주어질 때, 거울에 비춰지기 전 모습을 표현할수 있는지 판단하여라.
입력 :
입력으로 한 줄에 하나씩 소문자로만 이루어진 단어가 주어진다. 입력의 마지막 줄에는 # 한 글자가 입력으로 주어진다.
단어의 길이는 10을 넘지 않는다.
출력 :
각 줄마다 거울에 비춰지기 전 모습이 표현가능하다면 그 거울상의 모습을 출력하고 그렇지 않다면 'INVALID'를 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
boowxod bidi bed bbb # |
boxwood ibid INVALID ddd |
풀이 :
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))
var input: String?
while (readLine().also { input = it } != "#") {
var flag = false
val sb = StringBuilder(input!!.reversed())
for (i in sb.indices) {
when (sb[i]) {
'b' -> sb[i] = 'd'
'd' -> sb[i] = 'b'
'p' -> sb[i] = 'q'
'q' -> sb[i] = 'p'
'i', 'o', 'v', 'w', 'x' -> continue
else -> flag = true
}
}
bw.appendLine(if (flag) "INVALID" else sb.toString())
}
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
26742번: Skarpetki (0) | 2024.07.12 |
---|---|
3578번: Holes (0) | 2024.07.12 |
5376번: 소수를 분수로 (0) | 2024.07.11 |
8371번: Dyslexia (0) | 2024.07.11 |
27494번: 2023년은 검은 토끼의 해 (0) | 2024.07.11 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!