Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 3023번] 마술사 이민혁 - Java //Wello Horld //

koucop 2020. 3. 12. 15:49

 

 

 

이번에는 BOJ의 3023번 문제 "마술사 이민혁" 을 풀어보도록 하자

 

 

 

입력으로, 첫째 줄에 행의 개수 R 과 열의 개수 C 가 차례로 주어진다. 그 다음 R개 줄만큼 C개의 문자가 '.' 또는 '#' 으로 주어진다.
마지막 줄에는 에러의 위치 (A, B) 가 차례로 주어진다.

출력으로 카드 뒷 면 전체의 디자인을 출력하면 되는 문제이다.

성공한 코드는 다음과 같다.

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int R = Integer.parseInt(st.nextToken());
        int C = Integer.parseInt(st.nextToken());
        char[][] carr = new char[R * 2][C * 2];
        for(int i = 0; i < R; i++){
            String line = br.readLine();
            for(int j = 0; j < C; j++){
                carr[i][j] = line.charAt(j);
            }
        }
        for(int i = 0; i < R; i++){
            for(int j = 0; j < C; j++){
                carr[i][2 * C - 1 - j] = carr[i][j];
            }
        }
        for(int i = 0; i < R; i++){
            for(int j = 0; j < 2 * C; j++){
                carr[2 * R - 1 - i][j] = carr[i][j];
            }
        }
        st = new StringTokenizer(br.readLine());
        int r = Integer.parseInt(st.nextToken());
        int c = Integer.parseInt(st.nextToken());
        r -= 1;
        c -= 1;
        if(carr[r][c] == '#') carr[r][c] = '.';
        else carr[r][c] = '#';
        for(int i = 0; i < 2 * R; i++){
            for(int j = 0; j < 2 * C; j++){
                bw.write(carr[i][j]);
            }
            bw.write("\n");
        }

        bw.flush();
        br.close();
        bw.close();
    }
}

 

 

 

문제 : https://www.acmicpc.net/problem/3023

 

3023번: 마술사 이민혁

문제 유명한 마술사인 이민혁이 사용하는 카드의 뒷 면은 모두 자신이 디자인한 카드이다. 민혁이는 카드 뒷 면 전체를 디자인하지 않고, 왼쪽 위 1/4만 디자인한다. 그 다음 대칭시켜 오른쪽 위를 만들고, 다시 대칭시켜서 아래 부분을 모두 만든다. 이렇게 대칭시켜서 전체를 디자인 한 이후에는, 마술하는데 사용하기 위한 의도된 에러를 넣는다. 에러는 원래 '#'이어야 하는 칸을 '.'로 바꾸거나 '.'이어야 하는 칸을 '#'로 바꾸는 것이다. 왼쪽 위의 디자

www.acmicpc.net

 

혹시 코드에 이상한 부분이나 틀린 부분이 있던지, 이해가 안가는 부분이 있다면 댓글로 알려주세요