일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- react firebase
- vanillaJS
- 자바스크립트
- 리액트 훅
- 코딩테스트 고득점 Kit
- 프로그래밍 언어론
- 자바
- 코틀린
- 자바 공부
- useEffect
- design pattern
- 백준
- 장고
- JavaScript
- useState
- 리액트
- 디자인 패턴
- NextJS
- codesandbox
- 프로그래머스 완전탐색
- 프로그래머스 자바
- React JS
- react
- react hook
- 데이터모델링과마이닝
- 코딩테스트 고득점 Kit 완전탐색
- websocket
- 프로그래머스
- 컴퓨터 네트워크
- Java
Archives
- Today
- Total
기록하는 개발자
[프로그래머스][코딩테스트 고득점 Kit][java,javascript] 가장 먼 노드 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/49189?language=javascript
전체 코드
[ javascript ]
function solution(n, edge) {
// 양방향 그래프 생성
const graph = Array.from(Array(n),()=>[]);
for(let i=0; i<edge.length; i++){
graph[edge[i][0]-1].push(edge[i][1]-1);
graph[edge[i][1]-1].push(edge[i][0]-1);
}
let visited = Array.from({length : n},()=>0);
visited[0] = 1;
let queue = [0];
while (queue.length!=0) {
let now = queue.shift();
for (let next of graph[now]) {
// 방문한 적 없는 노드인 경우
if (visited[next] == 0) {
// 다음 방문 노드 경로 = 현재 노드까지의 경로 + 1
visited[next] = visited[now]+1;
queue.push(next);
}
}
}
// Math.max(...visited) : 1과 가장 멀리 떨어진 노드의 경로 길이
return visited.filter(n => n == Math.max(...visited)).length;
}
[java]
import java.util.*;
class Solution {
public int solution(int n, int[][] edge) {
ArrayList<Integer>[] graph = new ArrayList[n + 1];
for (int i = 0; i < n; i++)
graph[i] = new ArrayList<>();
for(int[] node : edge) {
graph[node[0]-1].add(node[1]-1);
graph[node[1]-1].add(node[0]-1);
}
Queue<Integer> queue = new LinkedList<>();
queue.offer(0);
int [] visited = new int[n];
visited[0]=1;
while(queue.size()!=0){
int top = queue.poll();
for (int i : graph[top]) {
if (visited[i] == 0) {
visited[i] = visited[top]+1;
queue.offer(i);
}
}
}
int max = Arrays.stream(visited).max().getAsInt();
int answer = 0;
for (int i = 0; i < n; i++){
if(visited[i]==max) answer++;
}
return answer;
}
}
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스][코딩테스트 고득점 Kit][java] 타겟 넘버 (0) | 2023.08.15 |
---|---|
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 모음 사전 (0) | 2023.08.14 |
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 디스크 컨트롤러 (0) | 2023.08.13 |
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 네트워크 (0) | 2023.08.13 |
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 정수 삼각형 (0) | 2023.08.13 |