반응형
문제 이해
아이디어
더보기



아이디어

위 와 같은 숫자열이 담긴 배열을 각각 90/180/270도로 돌려야 한다.
1. 가장 먼저 각 각도별로 인덱스 값을 적어 보았다.

2. 항상 맨 0번 '열'의 최하단 '행'에서 최상단'행'으로 올라가면
다음 각도의 1행의 0번 열, 1번 열, 2번 열 ,,,, n번 열의 원소가 된다는 점을 발견

3. 2번을 1번하면 90도, 2번하면 180도, 3번하면 270도 라는 걸 확인.
코드
import java.io.*;
import java.util.*;
public class Solution{
static int[][] base; // 원본 배열
static int[][] after; // 임시 배열
static String[][] show;
static int N;
static StringBuilder sb;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
sb = new StringBuilder();
// 1. 입력
int T = Int(br.readLine()); // 테스트 케이스의 수
for (int tc = 1; tc <= T; ++tc) { // 테스트 케이스를 반복
N = Int(br.readLine()); // 배열의 사이즈 N
base = new int[N][N]; // 원본 배열
after = new int[N][N]; // 임시 배열
show = new String[N][3]; // 90/180/270이 담길 배열
// 2. 배열 값 셋팅 시작
for (int i = 0; i < N; ++i) {
base[i] = new int[N]; // 초기화 - 2차원 배열이라서 안하면 안된다.
show[i] = new String[3]; // 초기화
st = new StringTokenizer(br.readLine(), " "); // 토큰 설정
for (int j = 0; j < N; ++j) {
base[i][j] = Int(st.nextToken()); // 배열 값 셋팅
}
}
// 3. 배열 90, 180, 270 셋팅
int y = 0; // 돌릴 배열의 인덱스
boolean isFirst= true; // 처음아니라면 배열을 변경해주는 플래그
for (int cnt = 0; cnt < 3; cnt++) {
if(!isFirst) afterCopy(); // 바뀐 배열로 변경
for (int j = 0; j < N; ++j) {
String tmp = "";
y=0;
for (int i = N - 1; i >= 0; --i) {
if(isFirst) isFirst = false;
int val = base[i][j];
after[j][y++] = val;
tmp += val;
}
show[j][cnt] = tmp;
}
}
sb.append("#").append(tc).append('\n');
setShow();
}
System.out.println(sb);
}
// show 배열 셋팅 메소드
static void setShow() {
for(int i=0;i<N; ++i) {
for(int j=0; j<3; ++j) {
sb.append(show[i][j]).append(" ");
}
sb.append('\n');
}
}
// 배열 카피 메소드
static void afterCopy() {
for(int i=0;i<N;++i) {
for(int j=0;j<N;++j) {
base[i][j]=after[i][j];
}
}
}
// Int형으로 파싱 후 반환 메소드
static int Int(String s) {
return Integer.parseInt(s);
}
}
집사는개발자가되고파
choppadontbiteme.tistory.com
반응형
'Algorithm > SWEA' 카테고리의 다른 글
[SWEA] 1976. 시간 덧셈 D2 JAVA (0) | 2021.03.26 |
---|---|
[SWEA] 1974. 스도쿠 검증 D2 JAVA (0) | 2021.03.26 |
[SWEA] 1970. 쉬운 거스름돈 D2 JAVA (0) | 2021.03.25 |
[SWEA] 1966. 숫자를 정렬하자 D2 JAVA (0) | 2021.03.25 |
[SWEA] 1959. 두 개의 숫자열 D2 JAVA (0) | 2021.03.25 |