모음지우기

2021. 11. 26. 10:26Javascript/문제풀이

문제

주어진 문장에서 모음에 해당하는 문자를 물음표(?)로 바꾸시오.
모음 ['a', 'e', 'i', 'o', 'u']

 

function deleteVowel(s) {
    const vowel = ['a', 'e', 'i', 'o', 'u'];
    let result = '';

    for (let i = 0; i < s.length; i++) {
        let flag = false;

        for (let j = 0; j < vowel.length; j++) {
            if (s[i] === voewl[j]) {
                flag = true;
                result += '?'
                break;
            }
        }

        if (!flag) {
            result += s[i];
        }
    }
    return result;
}
const str = 'The next day the little prince came back';
console.log(deleteVowel(str));

저기서 flag는 받은 문자가 vowel 안에 있는지 없는지 판별해서

없으면 1차 for 문 통과, 있으면 있다고 해주고, ? 로 변경해서 result 에 넣기

 

result = '?'        result 는 ? 이고 

result += '?'      result 값에다가 뒤에 ? 를 넣어주는거임

 

 

판별하는거 함수로 뺀 코드

function isVowel(c) {
const vowel = ['a', 'e', 'i', 'o', 'u'];
let flag = false; //선언

  for (let j = 0; j < vowel.length; j++) {
    if (vowel[j] === c) {
      flag = true; //사용
      break;
    }
  }
return flag;
}

function deleteVowel(s) {
let result = '';

  for (let i = 0; i < s.length; i++) {
    if (isVowel(s[i])) {
      result += '?';
    } else {
      result += s[i];
    }
  }
return result;
}

const str = 'The next day the little prince came back';
console.log(deleteVowel(str)); 
// 'Th? n?xt d?y th? l?ttl? pr?nc? c?m? b?ck'

 

 

 

** 왜왜왜 flag써야하냐!

맨날 천날 이해 못하고 까먹고 다시 기억해두기 !!!!!!!!!!!

flag 는 의미론적으로 사용되고있는 네이밍 변수로, 상태값을 체크할때 쓰는 편이고, 

수정버튼이 있을때 수정값을 입력하고 버튼을 눌렀는지 or

수정값을 입력하지 않았는데 버튼을 눌렀는지와 같이 상태의 분기처리를 할때 자주 사용된다! 

 

flag안쓰고 if문만 쓰면은 

result 값이 result = ? 이니깐 모음을 만나게 된다면 ?로 초기화 되어버린다

그렇다고 result += '?' 이거 쓰면 값을 넣어주니깐 모음앞에 ? 넣고 result += s[i] 와 중복으로 되어서 

Th?e n?ext d?ay th?e l?ittl?e pr?inc?e c?am?e b?ack 이렇게 결과 값이 나오는 것이지!!! 

function deleteVowel(s) {
  const vowel = ['a', 'e', 'i', 'o', 'u'];
  let result = '';

  for( let i = 0; i < s.length; i++){
    let flag = false;

    for (let j = 0; j < vowel.length; j++) {
      if (s[i] === vowel[j]) {
        result = '?'
      }
    }

    if (!flag) {
      result += s[i]
    }
  }
  return result;
}
const str = 'The next day the little prince came back';
console.log(deleteVowel(str));  // ?ack

'Javascript > 문제풀이' 카테고리의 다른 글

문자열 py갯수  (0) 2021.11.26
같은 문자는 싫어  (0) 2021.11.26
중복제거  (0) 2021.11.26
padStart  (0) 2021.11.26
공백제거 문자열 출력  (0) 2021.11.26