문제
천나라 민호성의 지영 공주님은 매우 아름답다. 공주님 자신도 이 세상 그 누구보다 자신이 아름답다는 것을 알고 있다. 공주님은 자신의 아름다움이 세월의 저편으로 사라지는 것을 매우 두려워한다. 그래서 하루에도 수십 수백 번씩 거울을 보며 자신의 모습이 여전히 아름다운지 확인을 거듭한다. 그러던 어느 날, 세상의 다양한 장면들을 담고 싶었던 공주님의 마법거울은 매일 똑같은 모습만을 비추는 자신의 운명에 좌절하며 앞으로의 운명을 개척하기로 결심했다. 마법거울은 매일 자신의 심리상태에 따라 거울에 비친 공주님의 모습을 좌/우 또는 상/하로 반전시켜 비추기로 한다. 마법거울의 심리상태는 1부터 3까지의 자연수로 표현할 수 있으며, 숫자가 클수록 더 화가 난 상태를 의미한다. 마법거울의 심리상태가 1일 때는 지영 공주님의 모습을 있는 그대로 표현하고, 2일 때는 좌/우로 반전된 모습을, 3일 때는 상/하로 반전된 모습을 표현한다. 정사각형 형태의 마법거울의 크기와 거울에 비친 지영 공주님의 원래 모습, 마법거울의 심리상태가 주어졌을 때, 마법거울에 비친 지영 공주님의 모습을 출력하라.
입력
첫 번째 줄에 정사각형 모양의 마법거울의 크기를 나타내는 자연수 N(2 ≤ N ≤ 100)이 입력된다. 그 다음 N개의 줄에 걸쳐 거울에 비친 지영 공주님의 원래 모습이 각 줄에 N개의 문자로 표현된다. 마법거울은 알파벳 대소문자로만 거울에 비친 상을 표현할 수 있다. 마지막 줄에 마법거울의 심리상태를 나타내는 정수 K(1 ≤ K ≤ 3)가 주어진다.
출력
마법거울의 심리상태에 따라 거울에 비친 지영공주님의 모습을 N×N크기의 정사각형 형태로 출력하라. 반전된 모습은 입력으로 주어진 문자의 위치를 반전시키는 것을 의미한다.
풀이 과정
2차원 문자열 배열을 이용하여 마법거울의 문자를 입력받고, K 에 따라 다르게 출력한다.
K = 1 : 마법거울을 그대로 출력하기
K = 2 : 마법거울을 좌우반전시켜 출력하기 ( 한 행을 출력할 때 뒤집어 출력하기 )
K = 3 : 마법거울을 상하반전시켜 출력하기 ( 행을 뒤집어 출력하기 )
C
#include <stdio.h>
int main(void) {
int n;
char arr[105][105];
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%s", arr[i]);
int k;
scanf("%d", &k);
if (k == 1) {
for (int i = 0; i < n; i++) printf("%s\n", arr[i]);
}
else if (k == 2) {
for (int i = 0; i < n; i++) {
for (int j = n - 1; j >= 0; j--)
printf("%c", arr[i][j]);
printf("\n");
}
}
else {
for (int i = n - 1; i >= 0; i--) {
for (int j = 0; j < n; j++)
printf("%c", arr[i][j]);
printf("\n");
}
}
return 0;
}
Python
import sys
input = sys.stdin.readline
n = int(input().rstrip())
maps = [list(input().rstrip()) for _ in range(n)]
k = int(input().rstrip())
if k == 1:
for m in maps:
print(''.join(m))
elif k == 2:
for m in maps:
print(''.join(reversed(m)))
else:
for i in range(n-1, -1, -1):
print(''.join(maps[i]))
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 1259 : 팰린드롬수 ( BRONZE 1 ) / C, Python (0) | 2023.11.05 |
---|---|
[ BOJ ] 5598 : 카이사르 암호 ( BRONZE 2 ) / C, Python (0) | 2023.11.04 |
[ BOJ ] 9655 : 돌 게임 ( SILVER 5 ) / C, Python (0) | 2023.11.03 |
[ BOJ ] 2798 : 블랙잭 ( BRONZE 2 ) / C, Python (0) | 2023.11.03 |
[ BOJ ] 2566 : 최댓값 ( BRONZE 3 ) / C, Python (0) | 2023.11.03 |