본문 바로가기

백준 문제풀기/JAVA

[백준 25755 JAVA 자바] 거울반사

뒤집고자 하는 방향과

NxN 행렬이 입력됩니다

 

2 <-> 5 끼리 바꿔주고

1 = 1

8 = 8

나머지 모든 숫자는 ? 로 바꿔준 후

 

원하는 방향으로 뒤집는게 문제입니다

 

코드입니다

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        String c = st.nextToken();
        int n = Integer.parseInt(st.nextToken());
        
        String[][] arr = new String[n][n]; // NxN 행렬을 만들어줍니다 (?를 저장하기위해 String으로)

        for(int i=0; i<n; i++) {
        	st = new StringTokenizer(br.readLine());
        	
        	for (int j=0; j<n; j++) {
                int num = Integer.parseInt(st.nextToken());
                if(num==1 || num==8) { // 조건에 맞춰서 먼저 저장을 해줍니다
                	arr[i][j] = String.valueOf(num);
                }else if(num==2) {
                	arr[i][j] = "5";
                }else if(num==5) {
                	arr[i][j] = "2";
                }else {
                	arr[i][j] = "?";
                }
            }
        }
        
        if(c.equals("D") || c.equals("U")) { //위로 뒤집기와 아래로 뒤집기의 결과는 같습니다
        	for(int i=0; i<n; i++) { //이 경우 1행 2행 3행을, 3행 2행 1행 순서로 출력해줍시다
            	for (int j=0; j<n; j++) { 
            		System.out.print(arr[n-1-i][j]+ " ");
                }
            	System.out.println(); // 줄바꿈용
            }
        	
        }else { // 오른쪽으로 뒤집기와 왼쪽으로 뒤집기의 결과는 같습니다
        	for(int i=0; i<n; i++) {
            	for (int j=0; j<n; j++) { //이 경우 1열 2열 3열을, 3열 2열 1열 순서로 출력해줍시다
            		System.out.print(arr[i][n-1-j]+ " ");
                }
            	System.out.println(); // 줄바꿈용
            }
        }
    }
}