알고리즘 풀이/프로그래머스

[프로그래머스][JAVA] 삼각 달팽이 (구현)

배게 2022. 4. 3. 07:07
728x90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.util.*;
 
class Solution {
    private static int[] dr = {10-1};
    private static int[] dc = {01-1};
    
    
    public int[] solution(int n) {
        int[][] temp = new int[n][n];
        
        int r = -1;
        int c = 0;
        int i = 0;
        int currVal = 1;
        boolean dirChanged = true;
        while(true){
            int nr = r+dr[i];
            int nc = c+dc[i];
            // System.out.println(nr+" "+nc);
            
            if(0<=nr && nr<&& 0<=nc && nc<n
                && temp[nr][nc]==0){
                r = nr;
                c = nc;
                temp[r][c] = currVal++;
                dirChanged = false;
            }
            else{
                if(dirChanged){
                    break;
                }
                i = (i+1)%3;
                dirChanged = true;
            } 
        }
        
        List<Integer> list = new ArrayList<>();
        for(int k=0; k<n; k++){
            for(int j=0; j<n; j++){
                // System.out.print(temp[k][j]+" ");
                if(temp[k][j]!=0){
                    list.add(temp[k][j]);
                }
                else{
                    break;
                }
            }
            // System.out.println();
        }
        
        
        
        int[] answer = new int[list.size()];
        for(int k=0; k<list.size(); k++){
            answer[k] = list.get(k);
        }
        
        return answer;
    }
}
cs