23841번: 데칼코마니백준/문제2024. 5. 27. 11:48
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/23841
언어 : Kotlin
문제 설명 :
시험과 과제에 지친 희권이는 취미로 그림을 그리기 시작했다.
하지만, 그림이 별로 마음에 들지 않아 데칼코마니로 바꾸려 한다.
위에 보이는 것처럼 그림을 좌우 방향으로 반으로 포개어 접으면, 맞닿는 면에 물감이 번지면서 데칼코마니가 완성된다.
접은 그림은 원래대로 되돌릴 수 없기 때문에 희권이는 결과를 미리 알고 싶어 한다.
희권이에게 그림을 데칼코마니 한 결과를 알려주자.
입력 :
첫 줄에 그림의 세로 길이 정수 N과 가로 길이 정수 M이 주어진다. (1 ≤ N, M ≤ 50, M은 짝수)
N개 줄에 M개씩 그림에 대한 정보가 주어진다.
물감은 26가지가 있고, 각각 알파벳 대문자 하나로 나타낸다.
그림에서 색칠한 곳은 물감에 해당하는 알파벳으로 빈 곳은 '.'으로 표현한다. 그림의 가로 길이는 짝수이고, 그림을 접었을 때 두 물감이 겹치는 경우는 없다.
출력 :
데칼코마니 한 그림을 N개의 줄에 걸쳐 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 1024MB
입출력 예 :
입력 | 출력 |
3 6 G..R.. ..B... Y..... |
G.RR.G ..BB.. Y....Y |
풀이 :
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 (n, m) = readLine().split(" ").map { it.toInt() }
val map = Array(n) {
val sb = StringBuilder(readLine())
for (i in 0 until m / 2) {
if (sb[i] == '.' || sb[sb.lastIndex - i] == '.') {
if (sb[i] == '.') sb[i] = sb[sb.lastIndex - i]
if (sb[sb.lastIndex - i] == '.') sb[sb.lastIndex - i] = sb[i]
}
}
sb.toString()
}
bw.write(map.joinToString("\n"))
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
20154번: 이 구역의 승자는 누구야?! (0) | 2024.05.28 |
---|---|
22351번: 수학은 체육과목 입니다 3 (0) | 2024.05.27 |
17502번: 클레어와 팰린드롬 (0) | 2024.05.27 |
1593번: 문자 해독 (0) | 2024.05.24 |
2037번: 문자메시지 (0) | 2024.05.24 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!