[알고리즘] 백준 4659 비밀번호 발음하기

Daon·2023년 3월 23일
0

알고리즘

목록 보기
2/11
post-thumbnail

백준 4659번 비밀번호 발음하기

문제에서 요구사항은
1. 모음 하나를 반드시 포함하여야한다.
2. 모듬 3개연속, 자음3개 연속은 false;
3. 같은 글자 2개연속 false 하지만 'e'와'o'는 괜찮다.
위에 3가지 요구사항을 해결하면 완성이다.

//1.모음 하나는 반드시 포함하여야 한다
function isVowel(idx) {
  if (idx === "a" || idx === "e" || idx === "i" || idx === "o" || idx === "u") {
    return true;
  } else {
    return false;
  }
}
function solution(str) {
  str.map((item) => {
    if (item == "end") return;
    let lcnt = 0,
      vcnt = 0,
      flag = 0,
      is_inclue_v = 0,
      prev = 0,
      idx = "";
    for (let i = 0; i < item.length; i++) {
      idx = item[i];
      if (isVowel(idx)) {
        vcnt++;
        lcnt = 0;
        is_inclue_v = 1;
      } else {
        lcnt++;
        vcnt = 0;
      }
      // 2. 3개 연속은 false
      if (vcnt == 3 || lcnt == 3) flag = 1;
      // 3. 같은 글자 2개 연속 false 하지만 e,o제외
      if (i >= 1 && prev == idx && idx != "e" && idx != "o") flag = 1;
      prev = idx;
    }
    if (is_inclue_v == 0) flag = 1;
    if (flag) console.log(`<${item}> is not acceptable`);
    else console.log(`<${item}> is acceptable`);
  });
}

let str = [
  "a",
  "tv",
  "ptoui",
  "bontres",
  "zoggax",
  "wiinq",
  "eep",
  "houctuh",
  "end",
];
solution(str);
profile
같이 일하고싶은 그런 개발자!

0개의 댓글