일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Euclidean
- Project
- Bronze
- Zenject
- trie
- PrefixSum
- effective C++
- LEVEL2
- SWEA
- stack
- 8-Puzzle
- solid 원칙
- Silver
- level3
- Modern C++
- algorithm
- Unity
- Gold
- two pointer
- programmers
- 프로세스 상태
- Flyweight Pattern
- BFS
- BOJ
- 프로그래머스
- 3D RPG
- knapsack Problem
- dirtyflag pattern
- level1
- binary search
Archives
- Today
- Total
Patrick's Devlog
[BOJ/C++] 비밀번호 발음하기(4659번) 본문
1. 개요
https://www.acmicpc.net/problem/4659
1-1. 설명
발음이 가능한 패스워드를 만드는 회사가 존재한다. 적당히 외우기 쉬우면서 안전하게 계정을 지킬 수 있는 비밀번호를 생성하기 위해 계획중이다. 높은 품질을 지닌 비밀번호 조건에 맞추어 비밀번호가 입력되었을 때, 높은 품질인지 확인하는 프로그램을 작성한다.
1-2. 제한 사항
- 여러개의 테스트 케이스로 이루어져 잇으며, 각 줄에 테스트할 패스워드가 주어짐
- 마지막 테스트 케이스는 end이며, 패스워드는 한글자 이상 20 글자 이하 문자열
2. 구현
2-1. 풀이
패스워드 입력을 받아 조건에 알맞게 코드를 구현하였다. 그리고 알맞은 비밀번호이면 acceptable을 출력하고, 알맞지 않은 비밀번호이면 not acceptable을 출력하게 하였다.
2-2. 코드
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string result[2] = { " is acceptable.", " is not acceptable." };
char vowels[5] = { 'a', 'e', 'i', 'o', 'u' };
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
string input;
int vowelCnt, consCnt; // 모음, 자음 count
int resultNum, idx;
bool vowelFlag;
char preCh;
while (true) {
cin >> input;
if (input == "end") break;
// 초기화
vowelCnt = 0, consCnt = 0, resultNum = 0;
vowelFlag = false;
idx = 0;
for (char ch : input) {
auto it = find(vowels, vowels + 5, ch);
if (idx == 0) preCh = ch;
else if (preCh == ch && ch != 'e' && ch != 'o') { // 같은 글자 연속 두번으로 나올 때
resultNum = 1;
break;
}
if (it == end(vowels)) { // 자음일 때
consCnt += 1;
vowelCnt = 0;
if (consCnt == 3) { // 자음이 3개 이상 나올 때
resultNum = 1;
break;
}
}
else { // 모음일 때
if (!vowelFlag) vowelFlag = true;
vowelCnt += 1;
consCnt = 0;
if (vowelCnt == 3) {
resultNum = 1;
break;
}
}
if (idx == input.size() - 1 && !vowelFlag) {
resultNum = 1;
break;
}
preCh = ch;
idx += 1;
}
cout << '<' << input << '>' << result[resultNum] << "\n";
}
return 0;
}
'Algorithm > Algorithms Practice' 카테고리의 다른 글
[BOJ/C++] 집합(11723번) (0) | 2022.11.18 |
---|---|
[BOJ/C++] A와 B 2(12919번) (0) | 2022.11.17 |
[BOJ/C++] 파티(1238번) (0) | 2022.11.15 |
[BOJ/C++] DFS와 BFS(1260번) (0) | 2022.11.14 |
[BOJ/C++] 접미사 배열(11656번) (0) | 2022.11.11 |