25755번: 거울반사
첫 번째 줄에는 임스가 뒤집고자 하는 방향 $W$와, 배열의 크기 $N$이 주어진다. $W$는 L, R, U, D 중 하나이다. $(2 \le N \le 20)$ 입력의 두 번째 줄부터 $N$개의 줄에 0이 아닌 숫자가 구성된 배열이 공백
www.acmicpc.net
문제 요약
1. 숫자 거울에 비쳐 반사되어 뒤집혀서 보이는 숫자를 출력한다.(숫자를 뒤집어 출력한다.)
2. 첫번째 줄에는 뒤집고자 하는 방향 W와, 배열의 크기 N이 주어진다.
3. W는 L(left), R(right), U(up), D(down) 중 하나이다.
4. 두번째 줄에는 N개의 줄에 0이 아닌 숫자가 공백으로 입력된다.
5. 만약 구분할 수 없는 숫자인 경우 "?"를 출력한다.
예제 입력 1
D 3
1 2 3
4 5 6
7 8 9
예제 출력 1
? 8 ?
? 2 ?
1 5 ?
풀이 과정
문제의 말이 좀 모호할 수 있다. 하지만 직접해보면 위와 같은 이미지가 나온다.
위 이미지를 보면 왼쪽이나 오른쪽이나 뒤집은 양상은 똑같다.
위, 아래로 뒤집은 것 또한 그렇다.
근데 자세히 보면 위, 아래 뒤집은 숫자 중에서 3을 3이 아닌 ?로 출력해야 한다는 점이다.
아무래도 문제를 보면 상하좌우 모두 같은 결과가 나오는 숫자를 말해서 이와 같이 체점하는 것 같다.
CODE
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char W = sc.next().charAt(0);
int N = sc.nextInt();
int[][] arr = new int[20][20];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
arr[i][j] = sc.nextInt();
}
}
if (W == 'L' || W == 'R') {
for (int i = 0; i < N; i++) {
for (int j = N - 1; j >= 0; j--) {
getResult(arr[i][j]);
System.out.print(' ');
}
System.out.println();
}
} else {
for (int i = N - 1; i >= 0; i--) {
for (int j = 0; j < N; j++) {
getResult(arr[i][j]);
System.out.print(' ');
}
System.out.println();
}
}
}
public static void getResult(int num) {
switch (num) {
case 1:
System.out.print(1);
break;
case 2:
System.out.print(5);
break;
case 5:
System.out.print(2);
break;
case 8:
System.out.print(8);
break;
default:
System.out.print('?');
}
}
}
'Beakjoon > Bronze' 카테고리의 다른 글
25591번: 푸앙이와 종윤이 (0) | 2023.03.05 |
---|---|
27110번: 특식 배부(C) (0) | 2023.03.03 |
14489번: 치킨 두 마리 (...)(JAVA) (0) | 2023.02.27 |
1259번: 팰린드롬수(PYTHON) (0) | 2023.02.26 |
19944번: 뉴비의 기준은 뭘까?(JAVA) (0) | 2023.02.25 |