https://programmers.co.kr/learn/courses/30/lessons/68645

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‚ผ๊ฐ ๋‹ฌํŒฝ์ด

5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11]

programmers.co.kr

 

 

 

 

 

 

ํ’€์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๋„์ €ํžˆ ๊ฐ์ด ์•ˆ์žกํ˜€์„œ ๋น ๋ฅด๊ฒŒ ๊ตฌ๊ธ€๋ง์„ ํ–ˆ๋‹ค. ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ ์ขŒํ‘œ๋“ค์„ ๋‚˜์—ดํ•ด ๊ทœ์น™์„ฑ์„ ์ฐพ์•„ ํ‘ผ ํ’€์ด๋ฅผ ๋ดค๋‹ค. ๊ทธ๋ƒฅ ํ’€์ด๋ฅผ ์ฝ์—ˆ์„ ๋•Œ๋Š” ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•˜์ง€๋งŒ, ์ง์ ‘ ๋”ฐ๋ผ์ณ๋ณด๋ฉด์„œ ๋‚˜๋„ ์ข…์ด์— ์ขŒํ‘œ๋ฅผ ๊ทธ๋ ค๊ฐ€๋ฉด์„œ ํ•˜๋‹ˆ ์ดํ•ด๊ฐ€ ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

 

 

 

 

 

1. 3๊ฐ€์ง€ ํŒจํ„ด์ด ๋ฐ˜๋ณต :  ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ, ์œ„๋Œ€๊ฐ์„  -> ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์„ ์ด์šฉํ•ด, ๊ฐ๊ฐ 0์ธ ๊ฒฝ์šฐ, 1์ธ ๊ฒฝ์šฐ, 2์ธ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ  ๋ฐ˜๋ณตํ•˜๊ฒŒ ํ•œ๋‹ค. 

 

2. ๊ฐ๊ฐ์˜ ํŒจํ„ด์— ๋งž๋Š” ์ขŒํ‘œ์˜ ๊ทœ์น™์„ฑ์„ ์ฐพ๋Š”๋‹ค.

 

์ขŒํ‘œ๊ฐ€ (x, y)๋ผ๋ฉด,

์•„๋ž˜ : x๊ฐ€ ์ฆ๊ฐ€๋œ๋‹ค.

์˜ค๋ฅธ์ชฝ : y๊ฐ€ ์ฆ๊ฐ€๋œ๋‹ค.

์œ„๋Œ€๊ฐ์„  : x๊ฐ€ ๊ฐ์†Œํ•˜๊ณ , y๋„ ๊ฐ์†Œํ•œ๋‹ค.

 

3. count๋ฅผ ์„ธ๋ฉฐ ๋ฐฐ์—ด์— ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.

 

 

 

 

 

์ฝ”๋“œ

class Solution {
    public int[] solution(int n) {
        int[] answer = new int[n * (n + 1) / 2];
        int[][] arr = new int[n][n];
        
        int count = 1;
        int x = -1;
        int y = 0;
        
        //์•„๋ž˜, ์˜ค๋ฅธ์ชฝ, ์œ„๋กœ ๋Œ€๊ฐ์„ ์ด ๋ฐ˜๋ณต๋œ๋‹ค
        for(int i = 0; i < n; i++) {
            for(int j = i; j < n; j++) {
                if(i % 3 == 0) { //์•„๋ž˜
                    x++;
                } else if(i % 3 == 1) { //์˜ค๋ฅธ์ชฝ
                    y++;
                } else { //์œ„๋กœ ๋Œ€๊ฐ์„ 
                    x--;
                    y--;
                }
                
                arr[x][y] = count++;
            }
        }
        
        //์ •๋‹ต ๋„์ถœ
        int k = 0;
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < n; j++) {
                if(arr[i][j] != 0) {
                    answer[k++] = arr[i][j];
                }
            }
        }
        
        return answer;
    }
}

 

 

 

 

 

์ฐธ๊ณ 

https://minhamina.tistory.com/58

 

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - Java] ์‚ผ๊ฐ ๋‹ฌํŒฝ์ด(์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ1)

๋ฌธ์ œ programmers.co.kr/learn/courses/30/lessons/68645 ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‚ผ๊ฐ ๋‹ฌํŒฝ์ด 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.k..

minhamina.tistory.com

 

 

 

 

 

 

 

๋ฒˆ์™ธ - ์‚ฌ๊ฐํ˜•

์‘์šฉํ•ด์„œ ์‚ฌ๊ฐํ˜•์œผ๋กœ ํ’€์–ด๋ดค๋‹ค. ์‚ฌ๊ฐํ˜•์ด ๋” ์–ด๋ ต๋‹ค.

 

public static int[][] solution(int n) {
	int[][] answer = new int[n][n];
		
	int count = 1;
	int x = 0;
	int y = -1;
		
	int k = n;
	for(int i = 0; i < n * 2 - 1; i++) {
		if(i % 2 == 1) {
			k--;
		}
			
		for(int j = 0; j < k; j++) {
			if(i % 4 == 0) { //์˜ค๋ฅธ์ชฝ
				y++;
			} else if(i % 4 == 1) { //์•„๋ž˜๋กœ
				x++;
			} else if(i % 4 == 2) { //์™ผ์ชฝ
				y--;
			} else { //์œ„๋กœ
				x--;
			}
				
			answer[x][y] = count++;
		}
			
	}
		
	return answer;
}

 

giraffe_