본문 바로가기
백준/출제한 문제들

[백준] 25755번 : 거울반사

by lms0806 2022. 10. 25.
728x90
반응형

https://www.acmicpc.net/problem/25755

 

25755번: 거울반사

첫 번째 줄에는 임스가 뒤집고자 하는 방향 $W$와, 배열의 크기 $N$이 주어진다. $W$는 L, R, U, D 중 하나이다. $(2 \le N \le 20)$ 입력의 두 번째 줄부터 $N$개의 줄에 0이 아닌 숫자가 구성된 배열이 공백

www.acmicpc.net

배열을 뒤집는 방향에 따라 바뀌는 부분만 이해하시면 되는 문제입니다.

"3"은 아래나 위로 뒤집어도 3이지만, 해당 문제에서는 "?"로 표현하시면 됩니다.

 

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());
		
		char c = st.nextToken().charAt(0);
		int n = Integer.parseInt(st.nextToken());
		
		int[][] arr = new int[n][n];
		for(int i = 0; i < n; i++) {
			st = new StringTokenizer(br.readLine());
			for(int j = 0; j < n; j++) {
				arr[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		
		char[][] answer = new char[n][n];
		if(c == 'U' || c == 'D') {
			for(int i = n - 1; i >= 0; i--) {
				for(int j = 0; j < n; j++) {
					answer[n - 1 - i][j] = input(arr[i][j]);
				}
			}
		}
		else {
			for(int i = 0; i < n; i++) {
				for(int j = n - 1; j >= 0; j--) {
					answer[i][n - 1 - j] = input(arr[i][j]);
				}
			}
		}
		
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i < n; i++) {
			for(int j = 0; j < n; j++) {
				sb.append(answer[i][j]).append(" ");
			}
			sb.append("\n");
		}
		System.out.print(sb);
	}
	
	public static char input(int n) {
		if(n == 2) {
			return '5';
		}
		else if(n == 5) {
			return '2';
		}
		else if(n == 1 || n == 8) {
			return (char)(n + '0');
		}
		return '?';
	}
}
728x90
반응형

댓글