멋쟁이사자처럼 프론트엔드 스쿨 2기 53_Day

aydennote·2022년 6월 21일
0
post-thumbnail

📖 오늘 학습 뽀인트!

  1. 코딩 테스트 문제
  2. 면접 질문 대비

1. 코딩 테스트 문제

class 노드 {
  constructor(){
      this.children = {}
      this.count = 0
  }
}

class 트라이 {
  constructor(){
      this.root = new 노드()
  }

  insertData(word){
      let current = this.root
      current.count += 1
      for (const s of word) {
          let child = current.children[s]

          if(!child) {
              child = new 노드()
              current.children[s] = child
          }

          child.count += 1
          current = child
      }
  }

  search(query){
      let current = this.root
      for (const q of query) {
          if(q === '?') {
              return current.count
          } else if (!current.children[q]){
              return 0;
          }
          current = current.children[q]
      }
  }
}

function solution(words, queries){
  answer = []
  
  const 트라이배열 = Array(11)
  const 트라이역배열 = Array(11)

  for (const word of words) {
      const 단어길이 = word.length
      const 트라이1 = 트라이배열[단어길이] ? 트라이배열[단어길이] : new 트라이()
      const 트라이2 = 트라이역배열[단어길이] ? 트라이역배열[단어길이] : new 트라이()
      트라이1.insertData(word)
      트라이2.insertData([...word].reverse().join(''))
      트라이배열[단어길이] = 트라이1
      트라이역배열[단어길이] = 트라이2
  }

  for (const query of queries) {
      if (!트라이배열[query.length]){
          answer.push(0)
          continue
      }

      let count

      if(query[0] !== '?'){
          count = 트라이배열[query.length].search(query)
      } else {
          count = 트라이역배열[query.length].search([...query].reverse().join(''))
      }
      answer.push(count)
  }

  return answer
}

카카오 2020년 공채문제로 프로그래머스 lv.4 문제로 트라이 자료구조로 풀이되었다.
프로그래머스 문제 링크


🕵️‍♀️ Trie 란?
문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조이다.


💬 아직 해당 풀이를 이해하지 못 했고 많이 부족하다고 느꼈다.
현재 제코베 JS 100제 풀이 91번까지 진행한 상태로 JS 100제에서도 다시 복습해야될 문제들이 산더미다. 제코베 JS 100제 복습과 동시에 프로그래머스 문제를 하나씩 풀어 lv.3 을 이해할 정도가 되었을 때 다시 볼 예정이다.

2. 면접 질문 대비

6월부터 CS 기초에 대한 학습과 JS 복습을 위해 면접 질문에 대한 답을 스스로 정리하며 블로그에 작성하고 있었다.
다만, 최근에는 React 학습으로 면접 질문에 대한 블로깅이 정체되어 있는 상태다.😂
오늘 수업 중 진행한 면접 질문 또한 기존에 블로깅하던 비공개 게시물에 추가하여 정리하고 어느정도 정리가 완료되면 공개할 예정이다.

profile
기록하는 개발자 Ayden 입니다.

0개의 댓글