https://www.acmicpc.net/problem/20187
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static int k, h, N, curCnt, mode;
public static char RR, CR;
public static int[][] map;
public static int[][] curMap = { { 0, 1, 2, 3 }, { 1, 0, 3, 2 }, { 2, 3, 0, 1 }, { 3, 2, 1, 0 } };
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
// 1. 입력받기
k = Integer.parseInt(br.readLine());
N = (int) Math.pow(2, k);
map = new int[N][N];
// 1-1. 접는방법 입력
st = new StringTokenizer(br.readLine());
for (int i = 0; i < k * 2; i++) {
String s = st.nextToken();
char c = s.charAt(0);
if (c == 'R' || c == 'L') {
RR = c;
} else {
CR = c;
}
}
// 1-2. 구멍 뚫는 위치 입력
h = Integer.parseInt(br.readLine());
// 1-3. 어느 위치에 구멍을 뚫는지 저장
if (RR == 'R' && CR == 'D') {
curCnt = 3;
} else if (RR == 'R' && CR == 'U') {
curCnt = 1;
} else if (RR == 'L' && CR == 'D') {
curCnt = 2;
} else if (RR == 'L' && CR == 'U') {
curCnt = 0;
}
// 2. 복사할 맵 유형 찾기
for (int i = 0; i < 4; i++) {
if (curMap[i][curCnt] == h)
mode = i;
}
// 2-1. 맵 복사
for (int i = 0; i < N; i+=2) {
for (int j = 0; j < N; j+=2) {
map[i][j] = curMap[mode][0];
map[i][j + 1] = curMap[mode][1];
map[i + 1][j] = curMap[mode][2];
map[i + 1][j + 1] = curMap[mode][3];
}
}
// 3. 출력
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.print(map[i][j] + " ");
}
System.out.println();
}
}
}
풀이 사항
풀이 일자: 2024.09.02
풀이 시간: 60분 00초
채점 결과: 정답
예상 문제 유형: 구현
풀이 방법
1. 2^k x 2^k 만큼의 map을 만들어주고 마지막에 접는 x축, y축 접는 방법을 기억해 둔다. (예, RD, LU)
2. 각각의 경우에 대해 어느 구역에 구멍을 뚫는지 위치를 저장해준다. 왼쪽 위 부터 뚫는 방법 그대로이다.
3. 복사할 맵 유형이 4가지인데 아까 뚫었던 구역과 구멍번호가 일치하는 유형을 찾아준다.
4. 맵의 크기만큼 복사해준다.
어떤식인지 그림을 통해 좀 더 자세히 설명하려고 한다.
k가 아무리 크게 주어져도 종이의 모양은 총 4가지 모양의 반복일 수 밬에 없다. 모양은 다음과 같다.
'코딩테스트 > JAVA' 카테고리의 다른 글
| [백준 JAVA] 1753번: 최단 경로 (0) | 2024.09.03 |
|---|---|
| [SWEA JAVA] 2115. [모의 SW 역량테스트] 벌꿀채취 (0) | 2024.09.02 |
| [백준 JAVA] 15683번: 감시 (0) | 2024.08.29 |
| [SWEA JAVA] 2383. [모의 SW 역량테스트] 점심 식사시간 (0) | 2024.08.29 |
| [SWEA JAVA] 1251. [S/W 문제해결 응용] 4일차 - 하나로 (0) | 2024.08.29 |