본문 바로가기
Research/Coding Test

해시_전화번호 목록

by RIEM 2023. 11. 18.
728x90

나의 풀이(효율성 문제 탈락)

function solution(phone_book) {
  var answer = true;

  for(let i = 0; i < phone_book.length; i++) {
    for(let j = i + 1; j < phone_book.length; j++) {
      
      if (phone_book[j].split(phone_book[i])[0] === "") {
        return false
      }
      
      if (phone_book[i].split(phone_book[j])[0] === "") {
        return false
      }
    }
  }

  return answer;
}

console.log(solution(["119", "97674223", "1195524421"]))

테스트 코드는 모두 통과되었지만, 시간 차원으로 인해 효율성 테스트를 충족하지 못했다. 아무래도 이중루프를 사용해서 발생한 것으로 보인다.

 

GPT의 풀이

GPT에게 개선 방법을 물어보니 이런 식으로 대답해주었다.

function solution(phone_book) {

  phone_book.sort();
  
  for(let i = 0; i < phone_book.length - 1; i++) {
    if (phone_book[i + 1].startsWith(phone_book[i])) {
      return false
    }
  }
  
  return true
}

말도 안되게 깔끔한 방법이었다. sorting을 하면, 철자 순으로 배열을 가진다. 앞의 요소가 뒤에 쓰일 거라면 반드시 바로 다음 요소에 배치될 것이기 때문에 다음 인덱스의 요소와 비교하면 된다. 정말 깔끔한 풀이다.

 

타인의 풀이

function solution(phoneBook) {
    return !phoneBook.sort().some((t,i)=> {
        if(i === phoneBook.length -1) return false;

        return phoneBook[i+1].startsWith(phoneBook[i]);        
    })
}
728x90

'Research > Coding Test' 카테고리의 다른 글

스택/큐_같은 숫자는 싫어  (1) 2023.11.19
정렬_K번째수  (0) 2023.11.18
해시_폰켓몬  (0) 2023.11.17
프로그래머스_lv0_안전지대  (0) 2023.11.17
해시_완주하지 못한 선수  (0) 2023.11.16

댓글