4659번: 비밀번호 발음하기 (acmicpc.net)
4659번: 비밀번호 발음하기
좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp
www.acmicpc.net
접근 : 구현, 문자열
1. 주어진 조건을 통해 구현
Javascript
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.split("\n")
.map((val) => val.trim());
function solution() {
while (input[0] !== "end") {
let s = input.shift().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 < s.length; i++) {
//a e i o u check
if (a.includes(s[i])) {
check1 = true;
}
//모음, 자음 3개 연속 check
if (a.includes(s[i])) {
vcnt++;
lcnt = 0;
} else {
vcnt = 0;
lcnt++;
}
if (vcnt === 3 || lcnt === 3) {
check2 = false;
}
//같은 글자 연속, 단 ee, oo ok
if (s[i] === s[i + 1]) {
if (s[i] === "e" || s[i] === "o") continue;
check3 = false;
}
}
if (check1 && check2 && check3) {
console.log(`<${s.join("")}> is acceptable.`);
} else {
console.log(`<${s.join("")}> is not acceptable.`);
}
}
}
solution();
C++
#include <bits/stdc++.h>
using namespace std;
string s;
int cnt[26], lcnt,vcnt;
bool isVowel(int a){
return (a==0||a==4||a==8||a==14||a==20);
}
int main()
{
freopen("input.txt", "r", stdin); //제출 시 삭제
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
while(true){
cin>>s;
if(s=="end") break;
memset(cnt,0,sizeof(cnt));
lcnt = vcnt = 0;
bool check = true;
for(int i=0;i<s.size();i++){
int idx = s[i]-'a';
cnt[idx]++;
if(isVowel(idx)) lcnt++, vcnt=0;
else vcnt++,lcnt=0;
if(vcnt==3||lcnt==3) check=false;
if((s[i+1]==s[i]) && (idx!=4 && idx !=14)){
check = false;
}
}
if(!cnt[0]&&!cnt[4]&&!cnt[8]&&!cnt[14]&&!cnt[20]) check= false;
if(check) cout<<"<"<<s<<">"<<" is acceptable.\n";
else cout<<"<"<<s<<">"<<" is not acceptable.\n";
}
return 0;
}
'코딩테스트(알고리즘) > baekjoon' 카테고리의 다른 글
[baekjoon] 14889 스타트와 링크 (0) | 2022.11.09 |
---|---|
[baekjoon] 10819 차이를 최대로 (0) | 2022.11.08 |
[baekjoon] 2910 빈도 정렬 (Javascript,C++) (0) | 2022.07.12 |
[baekjoon] 2583 영역 구하기 (Javascript,c++) (0) | 2022.07.11 |
[baekjoon] 2468 안전영역 (Javascript, c++) (0) | 2022.07.05 |