GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준풀이
  • 영어독해
  • 파이썬
  • PYTHON
  • 프론트엔드
  • javascript
  • 프로그래밍언어
  • 프로그래머스
  • 코딩
  • 프로그래머스풀이
  • 백준파이썬
  • 영어
  • 코테
  • 자바스크립트
  • 프로그래머스자바스크립트
  • 독해
  • 코드업
  • 코드업파이썬
  • 백준
  • 코딩테스트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 9934 , 완전 이진 트리
알고리즘 공부/백준 - 자바스크립트

백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 9934 , 완전 이진 트리

2022. 10. 25. 16:05

백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 9934 , 완전 이진 트리 [트리]

 

 

✔️Check Point !   ( 해당사항 ✓체크 )

1. 막힘 없이 수월하게 풀린 문제인가?

2. 1시간이내로 풀렸던 문제인가?

3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?

4. 시간을 써도 도무지 풀 수 없는 문제인가?

5. 솔루션을 찾아봤는가?

-------------------------------------------------------------------------------------------

난이도 체감 🧑‍💻
1. 최상
2. 상
3. 중
4. 하


이해도 🙆‍♂️
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함


덧붙일 말 🏷️
세그먼트 트리 풀 때, 익혀두었던 재귀로 풀었다. 트리 계층화 시키는 기본 문제다.

 

 

문제 출처 🏠

 

https://www.acmicpc.net/problem/9934

 

9934번: 완전 이진 트리

상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래

www.acmicpc.net

 

 

 

요구사항 📋

첫째줄에, K가 주어지는데 1 이상 2^K 미만의 구간을 나타냄.
둘째줄에는 2^K-1 만큼의 숫자가 주어짐. 이는 트리 왼쪽부터의 순서다.

트리를 계층화하여, 0번 계층부터 K-1 계층 순서대로 출력하여라.

 

 

 

 

해결 전략 📝

 

둘째 줄에 주어지는 숫자들은 트리를 계층화 시켰을 때, 왼쪽 순서대로 주어진다.

이 점을 이용해서 mid 값을 줄여나가는 재귀를 진행한다.

 

mid 인덱스를 기준으로 왼쪽 오른쪽을 나눠서 재귀를 해주고 파라미터 값으로는 구간을 쪼갠 배열과 현재의 계층을 담은 변수를 전달한다.

 

 

최종적으로, 쪼갠 배열의 길이가 1개가 되면 리프노드에 도착한 것이므로 return 시킨다.

 

완전 이진 트리이기 때문에, 가능한 풀이이다.

 

 

 

 

 

 

정답 💯

 

 

const input = require("fs")
  .readFileSync("/dev/stdin")
  .toString()
  .trim()
  .split("\n");

let [K, ...NUMS] = input;

NUMS = NUMS[0].split(" ").map(Number);
function solution(k, Nodes) {
  let tree = Array.from({ length: k + 1 }).map(() => []);

  const makeTree = (nodes, layer) => {
    let mid = ~~(nodes.length / 2);
    tree[layer].push(nodes[mid]);
    if (nodes.length === 1) return;
    if (layer + 1 <= k) {
      makeTree(nodes.slice(0, mid), layer + 1);
      makeTree(nodes.slice(mid, nodes.length), layer + 1);
    }
  };

  makeTree(Nodes, 1);
  for (let i = 1; i <= k; i++) console.log(tree[i].join(" "));
}

solution(Number(K), NUMS);

 

 

느낀점 🧑‍💻

트리 기본 문제로 좋은 문제 같다. 재귀탐색을 하면서 트리를 계층화시키는 과정이 재밌었음.

 

반응형

'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글

백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 14675 , 단절점과 단절선  (0) 2022.10.27
백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 2493 , 탑  (0) 2022.10.25
백준/ Silver 5 문제 , 백준 Node.js 자바스크립트 14929 , 귀찮아 (SIB)  (0) 2022.10.24
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 10546 , 배부른 마라토너  (0) 2022.10.22
백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 2800 , 괄호 제거 [자료구조, 스택]  (0) 2022.10.21
    '알고리즘 공부/백준 - 자바스크립트' 카테고리의 다른 글
    • 백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 14675 , 단절점과 단절선
    • 백준/ Gold 5 문제 , 백준 Node.js 자바스크립트 2493 , 탑
    • 백준/ Silver 5 문제 , 백준 Node.js 자바스크립트 14929 , 귀찮아 (SIB)
    • 백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 10546 , 배부른 마라토너
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바