Programers 1장 - Lv.0 외계어 사전
포스트
취소

Programers 1장 - Lv.0 외계어 사전

외계어 사전

문제

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

제한사항

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

입출력 예시

spelldicresult
[“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

입출력 예 설명

  • “p”, “o”, “s” 를 조합해 만들 수 있는 단어가 dic에 존재하지 않습니다. 따라서 2를 return합니다.
  • “z”, “d”, “x” 를 조합해 만들 수 있는 단어 “dzx”가 dic에 존재합니다. 따라서 1을 return합니다.
  • ”s”, “o”, “m”, “d” 를 조합해 만들 수 있는 단어가 dic에 존재하지 않습니다. 따라서 2을 return합니다.

유의사항

  • 입출력 예 #3 에서 “moos”, “smm”, “som”도 “s”, “o”, “m”, “d” 를 조합해 만들 수 있지만 spell의 원소를 모두 사용해야 하기 때문에 정답이 아닙니다.

내가 짠 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function solution(spell, dic) {
    let count = true
    let num = 0
    
    for(let i=0; i < dic.length; i++){
        for(let j=0; j<spell.length; j++){
            if(!dic[i].includes(spell[j])){
                count = count && false
            }
        }
        if(count !== false) num++
        count = true
    }
    
    if(num !== 0) return 1
    else return 2
    
}

코드 설명

  • for문을 반복하여 dic안의 문자열에 spell이 들어가 있는지 확인한다.
  • 만약 spell이 하나라도 들어가 있지 않다면 count에 논리연산자(&&)를 사용하여 false를 대입한다.
  • countfalse가 아니라면, dic안에 spell 전부 포함되어 있다는 말이기 때문에 num에 숫자 1을 더하고 다시 count=false로 만든다.
  • 반복문을 종료했을 때, num !== 0이라는 말은 문자(spell)을 조합하여 dic를 하나라도 만들 수 있다는 뜻이기 때문에 1을 출력하고, 0이라면 2를 출력한다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.