-
[Algo Rhythm๐บ๐] ํ๋ก๊ทธ๋๋จธ์ค ๊ณ ๋์ kit ๊ฐ์ฅ ๋จผ ๋ ธ๋Algo Rhythm๐บ๐/Programmers 2020. 7. 28. 12:35
๐ ๋ฌธ์ ์ค๋ช
n๊ฐ์ ๋ ธ๋๊ฐ ์๋ ๊ทธ๋ํ๊ฐ ์์ต๋๋ค. ๊ฐ ๋ ธ๋๋ 1๋ถํฐ n๊น์ง ๋ฒํธ๊ฐ ์ ํ์์ต๋๋ค. 1๋ฒ ๋ ธ๋์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๋ ์ต๋จ๊ฒฝ๋ก๋ก ์ด๋ํ์ ๋ ๊ฐ์ ์ ๊ฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ๋ ธ๋๋ค์ ์๋ฏธํฉ๋๋ค.
๋ ธ๋์ ๊ฐ์ n, ๊ฐ์ ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด vertex๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, 1๋ฒ ๋ ธ๋๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๊ฐ ๋ช ๊ฐ์ธ์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
-
๋ ธ๋์ ๊ฐ์ n์ 2 ์ด์ 20,000 ์ดํ์ ๋๋ค.
-
๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ฉฐ ์ด 1๊ฐ ์ด์ 50,000๊ฐ ์ดํ์ ๊ฐ์ ์ด ์์ต๋๋ค.
-
vertex ๋ฐฐ์ด ๊ฐ ํ [a, b]๋ a๋ฒ ๋ ธ๋์ b๋ฒ ๋ ธ๋ ์ฌ์ด์ ๊ฐ์ ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
๐ฏ ์ด๋ป๊ฒ ํ์๋
import java.util.HashMap; import java.util.ArrayList; import java.util.LinkedList; class Solution { public int solution(int n, int[][] edge) { int answer = 0; int leafLev = 0; boolean[] visited = new boolean[n + 1]; int[] level = new int[n + 1]; HashMap<Integer, ArrayList<Integer>> graph = new HashMap<>(); LinkedList<Integer> que = new LinkedList<>(); // init graph for(int i = 0; i < edge.length; i++) { ArrayList<Integer> lst = (graph.containsKey(edge[i][0])) ? graph.get(edge[i][0]) : new ArrayList<>(); lst.add(edge[i][1]); graph.put(edge[i][0], lst); lst = (graph.containsKey(edge[i][1])) ? graph.get(edge[i][1]) : new ArrayList<>(); lst.add(edge[i][0]); graph.put(edge[i][1], lst); } // BFS que.add(1); level[1] = 0; visited[1] = true; while(!que.isEmpty()) { int parent = que.remove(); for(int child : graph.get(parent)) { if(!visited[child]) { que.add(child); level[child] = level[parent] + 1; visited[child] = true; leafLev = level[child]; } } } // count for(int i = 0; i < level.length; i++) { if(leafLev == level[i]) answer++; } return answer; } }
๐ง ์ ์ ๋ ๊ฒ ํ์๋
์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋จํ๋ค. ๊ทธ๋ํ๋ฅผ ๋ง๋ ํ BFS๋ฅผ ํตํด ๊ฐ์ฅ ๋ง์ง๋ง level์ ์๋ ๋ ธ๋์ ๊ฐ์๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
์ฒ์์ directed graph๋ก ์๋ชป ๋ง๋ค์ด์ ์กฐ๊ธ ํค๋งธ์ง๋ง ์์ ํ ํ ์ ๋๋ก ํ ์ ์์๋ค.
๐ ๋ฌด์์ ๋ฐฐ์ ๋
๋ง์ฝ ํด์๋งต์ ํตํด์ undirected graph๋ฅผ ๊ตฌํํ ๋ ์ถ๋ฐ์ , ์์์ ๊ตฌ๋ถ์ด ์๊ธฐ ๋๋ฌธ์ ๋ node๋ค ๋ชจ๋ ํด์๋งต์ ๋ฃ์ด์ผ ํ๋ค.
'Algo Rhythm๐บ๐ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
-