본문 바로가기
코딩테스트(알고리즘)/baekjoon

[baekjoon] 4659 비밀번호 발음하기

by Cafe Mocha 2023. 1. 13.

4659번: 비밀번호 발음하기 (acmicpc.net)

 

4659번: 비밀번호 발음하기

좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp

www.acmicpc.net


알고리즘 : 구현

 

let input = require("fs")
  .readFileSync("input.txt") //"/dev/stdin"
  .toString()
  .split("\n")
  .map((val) => val.trim());
function solution() {
  while (1) {
    let word = input.shift();
    if (word === "end") return;
    if (word.length === 1) {
      console.log(`<${word}> is acceptable.`);
      continue;
    }

    word = word.split("");
    let check1 = false;
    let check2 = true;
    let vcnt = 0;
    let lcnt = 0;
    let check3 = true;

    let a = ["a", "e", "i", "o", "u"];
    for (let i = 0; i < word.length; i++) {
      //a e i o u check
      if (a.includes(word[i])) {
        check1 = true;
      }
      //모음, 자음 3개 연속 check
      if (a.includes(word[i])) {
        vcnt++;
        lcnt = 0;
      } else {
        vcnt = 0;
        lcnt++;
      }

      if (vcnt === 3 || lcnt === 3) {
        check2 = false;
      }

      //같은 글자 연속, 단 ee, oo ok
      if (word[i] === word[i + 1]) {
        if (word[i] === "e" || word[i] === "o") continue;
        check3 = false;
      }
    }

    if (check1 && check2 && check3) {
      console.log(`<${word.join("")}> is acceptable.`);
    } else {
      console.log(`<${word.join("")}> is not acceptable.`);
    }
  }
}

solution();