상세 컨텐츠

본문 제목

알고리즘 문제풀이 - isIsogram

Programming Language/JavaScript

by Yongari 2022. 12. 27. 19:15

본문

문제 설명

문자열을 입력받아 아이소그램인지 여부를 리턴해야 합니다. 아이소그램(isogram)은 각 알파벳을 한번씩만 이용해서 만든 단어나 문구를 말합니다. 즉 입력받은 문자열 중 중복되는 것이 있으면 false, 중복되는 것이 없으면 true를 반환하면 됩니다. 

 

입력

인자 1 : str

  • string 타입의 공백이 없는 알파벳 문자열

출력

  • boolean 타입을 리턴해야 합니다.

주의 사항

  • 빈 문자열을 입력받은 경우, true를 리턴해야 합니다.
  • 대소문자는 구별하지 않습니다.

입출력 예시

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;
}

관련글 더보기