문제 설명
문자열을 입력받아 아이소그램인지 여부를 리턴해야 합니다. 아이소그램(isogram)은 각 알파벳을 한번씩만 이용해서 만든 단어나 문구를 말합니다. 즉 입력받은 문자열 중 중복되는 것이 있으면 false, 중복되는 것이 없으면 true를 반환하면 됩니다.
입력
인자 1 : str
출력
주의 사항
입출력 예시
let output = isIsogram('aba');
console.log(output); // false
output = isIsogram('Dermatoglyphics');
console.log(output); // true
output = isIsogram('moOse');
console.log(output); // false
코드
function isIsogram(str) {
//입력받은 문자열을 모두 소문자로 변환
str = str.toLowerCase();
//빈 문자열이면 true를 반환
if (str.length === 0) {
return true;
}
const arr = [];
//문자열을 하나씩 arr 배열에 삽입
for (let i = 0; i < str.length; i++) {
arr.push(str[i]);
}
// console.log(arr); >> arr 확인
// 중복이 없는 set 생성
const set = new Set(arr);
//set사이즈와 arr 사이즈가 다르면 false, 같으면 true 반환
if (arr.length !== set.size) {
return false;
} else {
return true;
}
}
다른풀이
function isIsogram(str) {
if (str.length === 0) {
return true;
}
let cache = {};
let strLowered = str.toLowerCase();
// 문자열을 소문자로 바꾼 strLowered에서 반복 순회
for (let i = 0; i < strLowered.length; i++) {
//cache객체에서 true값이 있으면 false 반환
if (cache[strLowered[i]]) {
return false;
}
//기존 객체 밸류 값에 true가 없으면 true
cache[strLowered[i]] = true;
}
return true;
}
알고리즘 문제풀이 - numberSearch (0) | 2022.12.28 |
---|---|
알고리즘 문제풀이 - computeSquareRoot (0) | 2022.12.28 |
알고리즘 문제풀이 - modulo (0) | 2022.12.27 |
알고리즘 문제풀이 - superIncreasing (0) | 2022.12.26 |
알고리즘 문제풀이 - readVertically (0) | 2022.12.26 |