반응형
    
    
    
  정수 삼각형 - Dynamic Programming
import java.io.*;
import java.util.*;
class Solution {
    public int solution(int[][] triangle) {
        int answer = 0;
        int[][] dp = new int[triangle.length][triangle[triangle.length-1].length];
        dp[0][0] = triangle[0][0];
        for(int i = 1; i < triangle.length; i++) {
            for(int j = 0; j < i + 1; j++) {
                if(j == 0) {
                    dp[i][j] = dp[i-1][j] + triangle[i][j];
                } else if (j == i) {
                    dp[i][j] = dp[i-1][j-1] + triangle[i][j];
                } else {
                    dp[i][j] = triangle[i][j] + Math.max(dp[i-1][j], dp[i-1][j-1]);
                }
            }
        }
        answer = Arrays.stream(dp[dp.length-1]).max().getAsInt();
        return answer;
    }
}
이중 우선순위 큐 - Heap
import java.io.*;
import java.util.*;
class Solution {
    public int[] solution(String[] operations) {
        int[] answer = {0, 0};
        PriorityQueue<Integer> queue = new PriorityQueue<>();
        PriorityQueue<Integer> clone = new PriorityQueue<>();
        StringTokenizer str;
        for(String oper : operations) {
            str = new StringTokenizer(oper);
            switch (str.nextToken()) {
                case "I" : {
                    queue.offer(Integer.parseInt(str.nextToken()));
                    break;
                }
                case "D" : {
                    int sort = Integer.parseInt(str.nextToken());
                    if(sort == 1) {
                        if (!queue.isEmpty()) {
                            queue.stream()
                                    .limit(queue.size() - 1)
                                    .forEach(clone::offer);
                            queue.clear();
                            clone.forEach(queue::offer);
                            clone.clear();
                        }
                    }
                    else {
                        if (!queue.isEmpty())
                            queue.poll();
                    }
                    break;
                }
            }
        }
        if(queue.isEmpty())
            return answer;
        answer[1] = queue.peek();
        while(queue.size() != 1)
                queue.poll();
        answer[0] = queue.peek();
        return answer;
    }
}
네트워크 - DFS/BFS
import java.io.*;
import java.util.*;
class Solution {
    public static int[] parent = new int[200];
    public boolean union(int a, int b) {
        a = find(a);
        b = find(b);
        if(a == b)
            return false;
        if(a < b)
            parent[b] = a;
        else
            parent[a] = b;
        return true;
    }
    public int find(int a) {
        if(a == parent[a]) return a;
        return find(parent[a]);
    }
    public int solution(int n, int[][] computers) {
        int answer = 0;
        for(int i = 0; i < parent.length; i++)
            parent[i] = i;
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < n; j++) {
                if(i == j) continue;
                if(computers[i][j] == 1){
                    union(i, j);
                }
            }
        }
        ArrayList<Integer> plist = new ArrayList<>();
        for(int i = 0; i < n; i++) {
            int parent = find(i);
            if(!plist.contains(parent)){
                plist.add(parent);
            }
        }
        answer = plist.size();
        return answer;
    }
}반응형
    
    
    
  '코딩 문제 풀이 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] Lv3 문제풀이6(feat. JAVA) (1) | 2023.10.11 | 
|---|---|
| [프로그래머스] Lv3 문제풀이5(feat. JAVA) (0) | 2023.10.10 | 
| [프로그래머스] Lv3 문제풀이4(feat. JAVA) (0) | 2023.10.10 | 
| [프로그래머스] Lv3 문제풀이3(feat. JAVA) (0) | 2023.10.06 | 
| [프로그래머스] Lv3 문제풀이2(feat. JAVA) (1) | 2023.10.06 |