개발 공부 기록
[SWEA 1961번 / JAVA] 숫자 배열 회전 본문
Question
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq
💡 Solution
N x N 행렬이 주어질 때, 시계 방향으로 90도, 180도, 270도 회전한 모양을 출력해야 합니다. 이때, 행렬을 90도로 돌리는 함수를 하나만 만들어도 나머지 180도, 270도 회전 행렬은 각각 90도, 180도로 회전한 행렬을 인자로 넣어서 구해주면 됩니다.
저같은 경우 이러한 문제는 종이에 그려보는 게 직관적이라 빨리 해결하는데 도움이 됩니다.회전한 행렬의 (0, 0) 값이 회전하기 전 행렬의 (2, 0) 값이 들어가야 하고,회전한 행렬의 (0, 1) 값이 회전하기 전 행렬의 (1, 0) 값이 들어가야하고 .. 이런 식으로 써보면회전한 행렬 result[i][j]의 값은 회전하기 전의 행렬 map[N -1 -j][i] 값이라는 규칙이 나오게 됩니다.
💻 Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class SWEA1961 {
static int N;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
int[][] map = new int[N][N];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
int[][] map_90 = rotation(map);
int[][] map_180 = rotation(map_90);
int[][] map_270 = rotation(map_180);
System.out.printf("#%d\n", tc);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.print(map_90[i][j]);
}
System.out.print(" ");
for (int j = 0; j < N; j++) {
System.out.print(map_180[i][j]);
}
System.out.print(" ");
for (int j = 0; j < N; j++) {
System.out.print(map_270[i][j]);
}
System.out.println();
}
}
}
public static int[][] rotation(int[][] map) {
int[][] result = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
result[i][j] = map[N - 1 - j][i];
}
}
return result;
}
}
'PS > Implement' 카테고리의 다른 글
[SWEA 1979번 / JAVA] 어디에 단어가 들어갈 수 있을까 (0) | 2023.11.19 |
---|---|
[SWEA 1959번 / JAVA] 두 개의 숫자열 (1) | 2023.11.18 |
[SWEA 1234번 / JAVA] 비밀번호 (0) | 2023.11.17 |
[SWEA 1230번 / JAVA] 암호문3 (1) | 2023.11.17 |
[SWEA 1228번 / JAVA] 암호문2 (0) | 2023.11.16 |