[Algorithm/Java] SWEA 11315번 - 오목 판정
🔍 문제 풀이
풀이 방법
🐙🎓 문어박사 IT편의점 선생님의 TIP
- 회전, 반전되는 문제들은 값이 아닌 좌표를 기준으로 판단하자!
- 그리고 목적지 기준으로 정리를 해야한다.
문제 도식화
i, j의 규칙성을 찾으면 된다.
💻 전체 코드
import java.io.*;
import java.util.*;
public class Solution {
static int[][] arr;
static int n;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for(int tc=1; tc<=t; tc++){
// 입력 및 초기화
n = Integer.parseInt(br.readLine());
arr = new int[n][n];
for(int i=0; i<n; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
for(int j=0; j<n; j++){
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
// 회전 결과 배열 생성
int[][] rot90 = rotate90(arr);
int[][] rot180 = rotate90(rot90);
int[][] rot270 = rotate90(rot180);
// 출력
System.out.println("#" + tc);
for (int i = 0; i < n; i++) {
printRow(rot90[i]);
System.out.print(" ");
printRow(rot180[i]);
System.out.print(" ");
printRow(rot270[i]);
System.out.println();
}
}
}
// 90도 회전
static int[][] rotate90(int[][] origin){
int[][] result = new int[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
result[i][j] = origin[n-1-j][i];
}
}
return result;
}
static void printRow(int[] row) {
for (int val : row) {
System.out.print(val);
}
}
}
댓글남기기