1. 알고리즘 풀이

1. 전화번호 목록

Untitled

function solution(phone_book) {
  // table이라는 빈 객체 생성 (key-value를 위한)
  const table = {};
  for (const number of phone_book) {
    // phone_book을 key값으로 넣고, value를 true로 넣기
    table[number] = true;
  }
  for (const number of phone_book) {
    // 접두어를 찾기 반복문 진행
    // 접두어를 찾을 때 최대 길이보다 하나 짧게 진행
    for (let i = 1; i < number.length; i += 1) {
      const prefix = number.slice(0, i);
      if (table[prefix]) return false;
    }
  }
  return true;
}

Hashmap을 이용해서 문제 풀이 진행

function solution(phoneBook) {
  // sort를 통해 작은 수부터 정렬 후 some method를 통해 함수식 진행
  return !phoneBook.sort().some((t, i) => {
    // 겹치는게 없을 때 false를 제출
    if (i === phoneBook.length - 1) return false;

    // startsWith를 통해 접두어 확인 작업
    return phoneBook[i + 1].startsWith(phoneBook[i]);
  });
}

2. 암호 해독

문제링크

Untitled

function solution(cipher, code) {
    let answer = ''
    for (i = 0; i < cipher.length; i++){
        if ( (i + 1) % code === 0) {
            answer += cipher[i]
        }
    }
    return answer
}