[프로그래머스] 가장 먼 노드(JavaScirpt)

2022. 10. 21. 14:56·Algorithm/Solution
728x90

코딩테스트 연습 - 가장 먼 노드 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


난이도 : level 3

 

풀이 과정 :

Bfs를 이용해서 푸는 문제였다.

bfs만 알면 매우 간단한 문제라 js에서는 큐를 직접 구현하는 것이 핵심이다

풀다가 실수한 부분은 2차원 배열을 초기화 하는 부분에서 배열의 크기를 n+1로 안해서 계속 에러가 났엇다;;

그리고 풀고나서 다른 사람 코드를 보니 filter 함수를 이용해 이쁘게 답을 출력하던데 참고할만한 부분이었다.

 

ps. 근데 그래프문제는 그냥 C++이 편한거 같다...연습겸 js로 풀어보고 있긴한디.. 불편하네요

 

 

전체 코드 :

class Queue {
  constructor() {
    this.queue = [];
    this.front = 0;
    this.rear = 0;
  }
  push(value) {
    this.queue[this.rear++] = value;
  }
  pop(){
    const value = this.queue[this.front];
    delete this.queue[this.front];
    this.front++;
    return value;
  }
    
  top() {
    return this.queue[this.front];
  }    
  size() {
      return this.rear-this.front;
  }
}

function solution(n, edge) {
    var answer = 0;
    
    let graph = Array.from(Array(n+1), () => []);
    
    for([a,b] of edge){
        graph[a].push(b);
        graph[b].push(a);
    }
    
    
    let dist = new Array(n+1).fill(0);
    let max = -1;
    let q = new Queue();

    q.push(1);
    dist[1] = 1;
    while(q.size()>0){
        let now = q.top();
        q.pop();
        for(let i=0;i<graph[now].length;i++){
            let next = graph[now][i];
            if(!dist[next]){
                q.push(next);
                dist[next] = dist[now] + 1;
                if(max<dist[next]) max = dist[next];
            }            
        }
    }
    
   for(let i=1;i<=n;i++){
       if(max === dist[i]) answer++;
   }
    return answer;
    
   // filter을 이용해 답 출력  
   // return dist.filter(item => item === max).length;
}

 

728x90
저작자표시 비영리 (새창열림)

'Algorithm > Solution' 카테고리의 다른 글

[프로그래머스] 입국심사 (Javascript)  (0) 2022.10.21
[프로그래머스] 가장 큰 수 (JavaScript)  (0) 2022.10.21
[프로그래머스] 베스트앨범 (JavaScript)  (0) 2022.10.20
[프로그래머스] 프린터(JavaScript)  (0) 2022.10.20
[백준] 4179 불!(C++)  (2) 2022.09.30
'Algorithm/Solution' 카테고리의 다른 글
  • [프로그래머스] 입국심사 (Javascript)
  • [프로그래머스] 가장 큰 수 (JavaScript)
  • [프로그래머스] 베스트앨범 (JavaScript)
  • [프로그래머스] 프린터(JavaScript)
BeNI
BeNI
코딩하는 블로그
  • BeNI
    코딩못하는컴공
    BeNI
  • 전체
    오늘
    어제
    • Menu (253)
      • My profile (1)
      • 회고 | 후기 (8)
      • Frontend (65)
        • Article (11)
        • Study (35)
        • 프로그래머스 FE 데브코스 (19)
      • Backend (0)
      • Algorithm (58)
        • Solution (46)
        • Study (12)
      • Major (111)
        • C&C++ (23)
        • Java (20)
        • Data Structure (14)
        • Computer Network (12)
        • Database (15)
        • Linux (6)
        • Architecture (3)
        • Lisp (15)
        • OS (1)
        • Security (2)
      • etc (2)
  • 링크

    • 깃허브
    • 방명록
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    백준
    자료구조
    Algorithm
    리팩토링
    데브코스
    lisp
    C++
    react
    파일처리
    프로그래머스
  • hELLO· Designed By정상우.v4.10.2
BeNI
[프로그래머스] 가장 먼 노드(JavaScirpt)
상단으로

티스토리툴바