- 발행일
[ZBF] 5주차 코딩 테스트
[ZBF] 5주차 코딩 테스트
이 글은 네이버 블로그에 2024년 6월 16일에 올렸던 것을 그대로 옮겨온 것입니다.
1번째 문제.
- 주어진 패턴 p와 문자열 s가 있습니다.
- 패턴 p의 각 문자는 문자열 s의 단어들에 일대일 대응해야 합니다.
- 패턴 p와 문자열 s의 길이가 일치하지 않으면 조건을 만족하지 않습니다.
- 패턴 p의 동일한 문자는 문자열 s의 동일한 단어에 매핑되어야 합니다.
- 패턴 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;
}