11
15

 

class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        int T;
        T=sc.nextInt();
		
        int [] r = {1,0,-1,0}; // 3, 6, 9, 12
        int [] c= {0, 1, 0,-1};
        int cur = 0;
        for(int test_case = 1; test_case <= T; test_case++)
        {
            int n = sc.nextInt();
            int[][] map = new int[n][n];
            int x=0; int y=0;
            for(int i=1; i<=n*n;i++){
                map[x][y] = i;
                if(i == n || i == n+(n-1) ||i == n+(n-1)+(n-1)){
                    // ๋ฐฉํ–ฅ ํ‹€๊ธฐ
                    cur++;
                }
                x+= c[cur];
                y+= r[cur];
            }
            StringBuilder sb = new StringBuilder();
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    sb.append(map[i][j]).append(" ");
                }
                sb.append("\n");
            }
            System.out.printf("#%d\n%s",test_case, sb.toString());
        }
    }
}

 


์˜ค๋‹ต๋…ธํŠธ(ํ‘ธ๋Š” ๋™์•ˆ ์‚ฌ๊ณ ๊ณผ์ • ๋ฐ ๊ฐœ์„ ์ )

๊ผญ์ง€์ ์—์„œ ํšŒ์ „์‹œํ‚ค๊ณ , ๋ธํƒ€ ๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ๋ฐฉํ–ฅ์ „ํ™˜์„ ํ•˜๊ฒŒ ํ–ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋„ค ๊ผญ์ง€์ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐฉํ–ฅ์„ ํŠธ๋Š” ์กฐ๊ฑด์ด ํ•œ๋ฐ”ํ€ด๋ฅผ ๋Œ๋•Œ๋งˆ๋‹ค ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฑธ ์ œ๋Œ€๋กœ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์ง„ํ–‰๋ฐฉํ–ฅ +1์— ๊ฐ’์ด ์ฑ„์›Œ์ ธ์žˆ์œผ๋ฉด ๋ฐฉํ–ฅ์„ ๋Œ๋ ค๋ฒ„๋ฆฌ๋Š” ๋กœ์ง์ด ํ•„์š”ํ•˜๋‹ค.


์ •๋‹ต์ฝ”๋“œ

class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        int T;
        T=sc.nextInt();
	
        int [] r = {1,0,-1,0}; // 12, 3, 6, 9
        int [] c= {0, 1, 0,-1};
        for(int test_case = 1; test_case <= T; test_case++)
        {
            int cur = 0;
            int n = sc.nextInt();
            int[][] map = new int[n][n];
            int x=0; int y=0;
            
            for(int i=1; i<=n*n;i++){
                map[x][y] = i;

                if(x+c[cur%4] >= n || y+r[cur%4] >= n ||  x+c[cur%4] <0 || y+r[cur%4] <0){
                    // ๋ฐฉํ–ฅ ํ‹€๊ธฐ
                    cur++;
                    x+= c[cur%4];
                    y+= r[cur%4];
                }else{
                    if(map[x+c[cur%4]][y+r[cur%4]] != 0){
                        cur++;
                        x+= c[cur%4];
                        y+= r[cur%4];
                    }else{
                        x+= c[cur%4];
                        y+= r[cur%4];
                    }
                }
            }
            StringBuilder sb = new StringBuilder();
            for(int i=0;i<n;i++){
                for(int j=0;j<n;j++){
                    sb.append(map[i][j]).append(" ");
                }
                sb.append("\n");
            }
            System.out.printf("#%d\n%s",test_case, sb.toString());
        }
    }
}

 

์กฐ๊ฑด์„ ๊นŒ๋‹ค๋กญ๊ฒŒ ํ•„ํ„ฐ๋งํ•ด์„œ ๋ฐฉํ–ฅ์ „ํ™˜์„ ์‹œ์ผฐ๋‹ค.

IndexOutOfBound ์•ˆ๋‚˜๊ฒŒ ์กฐ์‹ฌํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ’€๋ฆฐ๋‹ค. ๋ฐฐ์—ด ํšŒ์ „์„ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฌธ์ œ๊ฐ™๋‹ค.

 

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^
๋ฐ˜์‘ํ˜•
COMMENT