내가 생각했을때 문제에서 원하는부분
첫 번째 줄에 정사각형 모양의 마법거울의 크기를 나타내는 자연수 N(2 ≤ N ≤ 100)이 입력된다.
그 다음 N개의 줄에 걸쳐 거울에 비친 지영 공주님의 원래 모습이 각 줄에 N개의 문자로 표현된다.
마법거울은 알파벳 대소문자로만 거울에 비친 상을 표현할 수 있다.
마지막 줄에 마법거울의 심리상태를 나타내는 정수 K(1 ≤ K ≤ 3)가 주어진다.
마법거울의 심리상태에 따라 거울에 비친 지영공주님의 모습을 N×N크기의 정사각형 형태로 출력하라.
반전된 모습은 입력으로 주어진 문자의 위치를 반전시키는 것을 의미한다.
내가 이 문제를 보고 생각해본 부분
입력 처리: BufferedReader를 사용하여 입력을 읽어온다.
첫 줄에서 정사각형의 크기 N을 읽고, 다음 N줄에서 거울에 비친 모습을 입력받아 2차원 배열에 저장해준다.
심리상태에 따른 변환:
상태 1에서는 입력을 그대로 복사한다.
상태 2에서는 각 행을 좌우 반전하여 저장한다.
상태 3에서는 각 행을 상하 반전하여 저장한다.
결과 출력: 변환된 배열을 출력한다.
코드로 구현
package baekjoon.baekjoon_27;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 백준 11586번 문제
public class Main985 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// N 입력
int N = Integer.parseInt(br.readLine());
char[][] mirror = new char[N][N];
// 원래 모습 입력
for(int i = 0; i < N; i++) {
mirror[i] = br.readLine().toCharArray();
}
// 심리상태 입력
int K = Integer.parseInt(br.readLine());
// 결과를 저장할 배열
char[][] result = new char[N][N];
// 심리상태에 따른 변환
if(K == 1) {
// 상태 1: 그대로
for(int i = 0; i < N; i++) {
result[i] = mirror[i].clone();
}
} else if(K == 2) {
// 상태 2: 좌/우 반전
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
result[i][j] = mirror[i][N - 1 - j];
}
}
} else if(K == 3) {
// 상태 3: 상/하 반전
for(int i = 0; i < N; i++) {
result[i] = mirror[N - 1 - i].clone();
}
}
// 결과 출력
for(int i = 0; i < N; i++) {
System.out.println(result[i]);
}
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.