3023번: 마술사 이민혁백준/문제2024. 4. 1. 15:16
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/3023
언어 : Kotlin
문제 설명 :
유명한 마술사인 이민혁이 사용하는 카드의 뒷 면은 모두 자신이 디자인한 카드이다.
민혁이는 카드 뒷 면 전체를 디자인하지 않고, 왼쪽 위 1/4만 디자인한다. 그 다음 대칭시켜 오른쪽 위를 만들고, 다시 대칭시켜서 아래 부분을 모두 만든다.
이렇게 대칭시켜서 전체를 디자인 한 이후에는, 마술하는데 사용하기 위한 의도된 에러를 넣는다. 에러는 원래 '#'이어야 하는 칸을 '.'로 바꾸거나 '.'이어야 하는 칸을 '#'로 바꾸는 것이다.
왼쪽 위의 디자인과 에러의 위치가 주어졌을 때, 카드 뒷 면 전체 디자인을 구하는 프로그램을 작성하시오.
아래 그림은 민혁이의 카드의 예시이다. (회색 칸은 에러이다)
###.##.### ########## .########. ..######.. ####.##### ########## ..######.. .########. ########## ###.##.### |
#.#..#.# #.####.# #.####.# ........ .#.##.#. .#.##.#. ........ #.####.# #.####.# #.#.##.# |
.#.##.## #.#..#.# ........ ..#..#.. ..#..#.. ........ #.#..#.# ##.##.## |
입력 :
첫째 줄에 왼쪽 위 부분의 행의 개수 R과 열의 개수 C가 주어진다. (1 ≤ R, C ≤ 50)
다음 R개 줄에는 C개의 문자 '.' 또는 '#'가 주어진다.
마지막 줄에는 에러의 위치 A와 B가 주어진다. (1 ≤ A ≤ 2R, 1 ≤ B ≤ 2C)
출력 :
카드 뒷 면 전체 디자인을 총 2R개 줄에 걸쳐서 출력한다. 각 줄은 2C개의 문자로 이루어져 있어야 한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
2 2 #. .# 3 3 |
#..# .##. .#.. #..# |
3 3 ### ### ### 1 4 |
###.## ###### ###### ###### ###### ###### |
5 4 #.#. #.## #.## .... .#.# 10 5 |
#.#..#.# #.####.# #.####.# ........ .#.##.#. .#.##.#. ........ #.####.# #.####.# #.#.##.# |
풀이 :
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 (r, c) = readLine().split(" ").map { it.toInt() }
val map = MutableList(r) { readLine() }
val new = mutableListOf<String>()
for (i in 0 until 2) {
when (i) {
0 -> {
map.forEach {
new += it + it.reversed()
}
}
1 -> {
map.reversed().forEach {
new += it + it.reversed()
}
}
}
}
val (er, ec) = readLine().split(" ").map { it.toInt() - 1 }
new[er] = new[er].replaceRange(ec .. ec, if (new[er][ec] == '.') "#" else ".")
new.forEach { bw.appendLine(it) }
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
3076번: 상근이의 체스판 (1) | 2024.04.02 |
---|---|
1380번: 귀걸이 (0) | 2024.04.01 |
29699번: Welcome to SMUPC! (0) | 2024.04.01 |
27160번: 할리갈리 (0) | 2024.03.29 |
20528번: 끝말잇기 (0) | 2024.03.29 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!