1961 숫자 배열 회전

Sungmin·2023년 10월 26일
0

SWEA 알고리즘

목록 보기
7/26

숫자 배열 회전 URL

내 풀이

import java.io.*;
import java.util.*;

public class SW1961 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());

        for (int t = 1; t <= T; t++) {
            int N = Integer.parseInt(br.readLine());
            int[][] graph = new int[N][N];

            for (int i = 0; i < N; i++) {
                StringTokenizer st = new StringTokenizer(br.readLine());
                for (int j = 0; j < N; j++) {
                    graph[i][j] = Integer.parseInt(st.nextToken());
                }
            }

            System.out.println("#" + t);
            int idx1 = 0; int idx2 = N-1;
            while (true) {
                String s1 = "";
                for (int x = N-1; x >= 0; x--) {
                    s1 += graph[x][idx1];

                }
                s1 += " ";
                for (int y = N-1; y >= 0; y--) {
                    s1 += graph[idx2][y];
                }
                s1 += " ";
                for (int z = 0; z < N; z++) {
                    s1 += graph[z][idx2];
                }
                idx1++;
                idx2--;
                System.out.println(s1);
                if (idx1 >= N) break;
            }
        }
    }
}

배운점

규칙을 찾는데만 시간을 많이 보낸 문제이다.
노트에 몇행 몇열인지 하나씩 써 보면서 규칙을 알아냈을 때 부터 푸는데 까지는 오래걸리지 않았다. 문제를 더 많이 풀어봐야 속도가 빨라질 것 같다.

풀이

1. 먼저 graph[][] 배열을 생성하고 그 안에 입력값을 모두 넣는다.
2. 한 열씩 동일한 규칙이 있는데 0번째 열 부터 하나씩 채워나간다.
3. 하나의 문자열에 담고 종료조건으로 N범위를 벗어나면 종료.

※규칙: ↑ ← ↓ 각 열마다 이러한 방향으로 읽으면 된다.

profile
Let's Coding

0개의 댓글