발행일

[ZBF] 5주차 코딩 테스트

[ZBF] 5주차 코딩 테스트

이 글은 네이버 블로그에 2024년 6월 16일에 올렸던 것을 그대로 옮겨온 것입니다.

1번째 문제.

  1. 주어진 패턴 p와 문자열 s가 있습니다.
  2. 패턴 p의 각 문자는 문자열 s의 단어들에 일대일 대응해야 합니다.
  3. 패턴 p와 문자열 s의 길이가 일치하지 않으면 조건을 만족하지 않습니다.
  4. 패턴 p의 동일한 문자는 문자열 s의 동일한 단어에 매핑되어야 합니다.
  5. 패턴 p의 서로 다른 문자는 문자열 s의 서로 다른 단어에 매핑되어야 합니다.
// 주어진 패턴과 문자열이 조건을 만족하는지 확인하는 함수
function solution(p, s) {
    const words = s.split(' ');
    if (p.length !== words.length) {
        return false;
    }

    const pMap = {};
    const usedWords = new Set();

    for (let i = 0; i < p.length; i++) {
        const char = p[i];
        const word = words[i];

        if (pMap[char]) {
            if (pMap[char] !== word) {
                return false;
            }
        } else {
            if (usedWords.has(word)) {
                return false;
            }
            pMap[char] = word;
            usedWords.add(word);
        }
    }

    return true;
}

2번째 문제.

주어진 문자열 s가 있습니다. 이 문자열에는 여러 단어가 공백으로 구분되어 있습니다. 이 문자열에서 중복된 단어를 제거한 후, 고유한 단어의 개수를 반환하는 함수를 작성하세요.

함수 이름은 solution이며, 하나의 매개변수 s를 받습니다.

function solution(s) {
    // 문자열을 공백을 기준으로 나누어 배열로 만듭니다.
    const words = s.split(' ');

    // Set 객체를 사용하여 중복된 단어를 제거합니다.
    const uniqueWords = new Set(words);

    // 중복을 제거한 단어의 수를 반환합니다.
    return uniqueWords.size;
}

3번째 문제.

주어진 문자열 s가 알파벳의 모든 문자를 포함하는지 확인하는 함수를 작성하세요. 대소문자를 구분하지 않으며, 문자열 s에 알파벳 소문자와 대문자가 혼합되어 있을 수 있습니다. 함수는 문자열 s에 알파벳의 모든 문자가 최소 한 번씩 포함되어 있으면 true, 그렇지 않으면 false를 반환해야 합니다.

함수 이름은 solution이며, 하나의 매개변수 s를 받습니다.

function solution(s) {
    // 문자열을 소문자로 변환합니다.
    const lowerCaseString = s.toLowerCase();
    
    // 알파벳 문자를 저장할 Set 객체를 생성합니다.
    const alphabetSet = new Set();
    
    // 문자열을 순회하며 알파벳 문자를 Set 객체에 추가합니다.
    for (let char of lowerCaseString) {
        if (char >= 'a' && char <= 'z') {
            alphabetSet.add(char);
        }
    }
    
    // Set 객체의 크기가 26이면 true, 아니면 false를 반환합니다.
    return alphabetSet.size === 26;
}