백준 지영 공주님의 마법 거울

KIMYEONGJUN·2025년 4월 8일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫 번째 줄에 정사각형 모양의 마법거울의 크기를 나타내는 자연수 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();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글