728x90
문제
https://www.acmicpc.net/problem/4659
풀이
const input = require("fs")
.readFileSync(
process.platform === "linux" ? "/dev/stdin" : __dirname + "/example.txt"
)
.toString()
.trim()
.split("\n")
.map((e) => e.trim());
let answer = [];
const checkMou = (st) => {
const aeiou = /[aeiou]/.test(st);
return aeiou;
};
const checkTriple = (st) => {
let aCnt = 0;
let cnt = 0;
for (let s of st) {
if (/[aeiou]/.test(s)) {
cnt = 0;
aCnt += 1;
} else {
aCnt = 0;
cnt += 1;
}
if (aCnt === 3 || cnt === 3) return false;
}
return true;
};
const checkDouble = (st) => {
const sInfo = { text: st[0], cnt: 0 };
for (let s of st) {
if (sInfo.text === s) sInfo.cnt += 1;
else {
sInfo.text = s;
sInfo.cnt = 1;
}
if (sInfo.cnt === 2 && !(sInfo.text === "e" || sInfo.text === "o")) {
return false;
}
}
return true;
};
for (let st of input) {
if (st === "end") break;
const mou = checkMou(st);
const triple = checkTriple(st);
const double = checkDouble(st);
if (mou && triple && double) {
answer.push(`<${st.trim()}> is acceptable.`);
} else {
answer.push(`<${st.trim()}> is not acceptable.`);
}
}
console.log(answer.join("\n"));
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[JS] 랭킹전 대기열 (0) | 2025.04.11 |
---|---|
[JS] 12919_A와 B 2 (0) | 2025.04.10 |
[JS]1956_운동 (0) | 2025.04.04 |
[JS] 2504_괄호의 값 (0) | 2025.03.20 |
[JS] 2941_크로아티아 알파벳 (0) | 2025.03.20 |