프로그래머스 JS LV0

LV0 66 외계어 사전

와라리요 2022. 10. 28. 14:23

문제

 - PROGRAMMERS-962 행성에 불착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • spell과 dic의 원소는 알파벳 소문자로만 이루어져있습니다.
  • 2 ≤ spell의 크기 ≤ 10
  • spell의 원소의 길이는 1입니다.
  • 1 ≤ dic의 크기 ≤ 10
  • 1 ≤ dic의 원소의 길이 ≤ 10
  • spell의 원소를 모두 사용해 단어를 만들어야 합니다.
  • spell의 원소를 모두 사용해 만들 수 있는 단어는 dic에 두 개 이상 존재하지 않습니다.
  • dic과 spell 모두 중복된 원소를 갖지 않습니다.

 

입출력 예

spell dic result
["p", "o", "s"] ["sod", "eocd", "qixm", "adio", "soo"] 2
["z", "d", "x"] ["def", "dww", "dzx", "loveaw"] 1
["s", "o", "m", "d"] ["moos", "dzx", "smm", "sunmmo", "som"] 2

 

나만의 풀이

  어떻게 하면 해당 값을 return 할 수 있는지 생각했다. 매개변수 spell를 알파벳 순서로 정렬하고 배열 안에 있는 단어들도 전부 알파벳 순서로 바꿔 spell와 비교 후 같은 게 있으면 일정 값을 반환하여 삼항 연산자를 이용해 1 : 2를 반환하게 하면 된다는 생각을 했다.

  비교하는 부분은 for문을 사용했으며 배열의 값은 join()을 이용해 합친 후 단어 하나 하나를 비교하게 코드를 구성했다.

  return의 삼항연산자에 === 1이 아니고 > 0가 들어가도 된다. 하지만 제한사항에 2개 이상의 원소가 겹치는 단어는 존재하지 않는다 하여 === 1이 더 맞다고 생각하였다.

function solution(spell, dic) {
    let answer = 0;
    const spellSort = spell.sort().join()
    for (let i = 0; i < dic.length; i++) {
        [...dic[i]].sort().join() === spellSort ? answer += 1 : null;
    }
    return answer === 1 ? 1 : 2;   
}

'프로그래머스 JS LV0' 카테고리의 다른 글

LV0 68 소인수분해  (0) 2022.11.08
LV0 67 숨어있는 숫자의 덧셈 (2)  (0) 2022.10.28
LV0 65 공 던지기  (0) 2022.10.27
LV0 64 가까운 수  (0) 2022.10.27
LV0 63 이진수 더하기  (0) 2022.10.27