안녕하세요. 오늘은 마술사가 되어볼 거예요.
https://www.acmicpc.net/problem/3023
총 2R2C개의 칸을 출력해야합니다.
그대로 출력을 한다고 하면 (x,y)는 (min(x,2R+1-x),min(y,2*C+1-y))의 값을 그대로 가져와야합니다.
하지만 어떤 칸이 바뀌어 있으므로 그 칸만 바꿔서 출력해주면 됩니다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
char painting[111][111] = { 0 };
int R, C, i, j, x, y;
cin >> R >> C;
for (i = 1; i <= R; i++)
for (j = 1; j <= C; j++)
cin >> painting[i][j];
cin >> x >> y;
for (i = 1; i <= 2 * R; i++)
{
for (j = 1; j <= 2 * C; j++)
{
char temp = painting[min(i, 2 * R + 1 - i)][min(j, 2 * C + 1 - j)];
if (i == x && j == y) cout << (char)('.' + '#' - temp);
else cout << temp;
}
cout << "\n";
}
}
감사합니다.