Junior-Developer
Home
  • Category (316)
    • 문제풀이 (270)
      • 백준oj (201)
      • 프로그래머스 (53)
      • 명품 자바 프로그래밍(개정4판) (11)
      • 구름 (5)
    • 알고리즘 (6)
    • Node.js (2)
    • 체크리스트 (37)
블로그 내 검색
Home

Junior-Developer

1일 1커밋! 1일 1 백준!

  • 문제풀이/백준oj

    [백준OJ] 4659번 비밀번호 발음하기

    2021. 7. 23.

    by. Hyeon-Uk

    반응형

    https://www.acmicpc.net/problem/4659

     

    4659번: 비밀번호 발음하기

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

    www.acmicpc.net


     

    -풀이-

    모음인지 검사해주는 isVowels를 선언해준다.

    bool isVowels(char a){
        if(a=='a'||a=='e'||a=='i'||a=='o'||a=='u'){
            return true;
        }
        else{
            return false;
        }
    }

     

    그런뒤, 조건에 맞춰서 검사를 해주면 된다. 사실 구현문제라 풀이를 해줄것이 없다.

     

    -시간복잡도-

    문자열의 길이를 S, 테스트 케이스의 개수를 T라하면 O(ST)가 된다.

     

    -코드-

    #include <algorithm>
    #include<iostream>
    #include<string>
    using namespace std;
    
    bool isVowels(char a){
        if(a=='a'||a=='e'||a=='i'||a=='o'||a=='u'){
            return true;
        }
        else{
            return false;
        }
    }
    
    bool isAcceptable(string st){
        int vowels=0;
        int sequenceV=0;
        int sequenceC=0;
            
        for(int i=0;i<st.size();i++){
            //모음의 개수를 세어주고 , 모음이 연속 3개면 false
            if(isVowels(st[i])){
                vowels++;
                sequenceV++;
                sequenceC=0;
                if(sequenceV==3){
                    return false;
                }
            }
            //자음의 개수를 세어주고, 자음이 연속 3개면 false
            else{
                sequenceV=0;
                sequenceC++;
                if(sequenceC==3){
                    return false;
                }
            }
            
            //e 와 o 를 제외한 연속된 2개 단어면 false
            if(i!=0){
                if(st[i]==st[i-1]&&st[i]!='e'&&st[i]!='o'){
                    return false;
                }
            }
        }
        if(vowels==0) return false;//모음이 0개면 false
        
        return true;
    }
    
    int main(){
        cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false);
        while(true){
            string st;
            cin>>st;
            if(st=="end") break;
            
            if(isAcceptable(st)){
                cout<<"<"<<st<<"> is acceptable.\n";
            }
            else{
                cout<<"<"<<st<<"> is not acceptable.\n";
            }
           
        }
    }
    반응형
    저작자표시 (새창열림)

    '문제풀이 > 백준oj' 카테고리의 다른 글

    [백준OJ] 7490번 0 만들기  (0) 2021.07.26
    [백준OJ] 18809번 Gaaaaaaaaaarden  (0) 2021.07.24
    [백준OJ] 5014번 스타트링크  (0) 2021.07.22
    [백준OJ] 6996번 애너그램  (0) 2021.07.22
    [백준OJ] 2637번 장난감 조립  (0) 2021.07.21

    댓글

    관련글

    • [백준OJ] 7490번 0 만들기 2021.07.26
    • [백준OJ] 18809번 Gaaaaaaaaaarden 2021.07.24
    • [백준OJ] 5014번 스타트링크 2021.07.22
    • [백준OJ] 6996번 애너그램 2021.07.22
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
Hyeon-Uk

티스토리툴바