CodingTest/Baekjoon

[baekjoon] 백준 4959번(파이썬): 비밀번호 발음하기

JunJangE 2022. 1. 16. 00:51

문제

 

4659번: 비밀번호 발음하기

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

www.acmicpc.net

알고리즘

- 반복문을 통해 패스워드를 확인한다.

- 우선 모음이 하나라도 있는지 확인 후 없다면 not으로 출력 후 반복을 돌린다.

- 모음이 하나라도 있다면 반복문과 조건문을 통해 모음이 3개 혹은 자음이 3개 연속으로 오는지 확인하면서 같은 글자가 연속적으로 두 번 나오는지 확인한다. 이때, ee와 oo는 허용한다.

코드

import sys

aeiou = ["a", "e", "i", "o", "u"] # 모음

# 반복문을 통해 패스워드를 확인
while True:
    word = list(map(str, sys.stdin.readline().strip()))
    flag = False # 규칙 판별

    # 패스워드 확인 종료
    if "".join(word) == "end":
        break

    # 반복문을 통해 모음이 하나라도 들어가 있는지 확인
    for k in word:
        if k in aeiou:
            flag = True
            break

    # 모음이 안들어가 있다면 not으로 출력
    if not flag:
        print("<{0}> is not acceptable.".format("".join(word)))
        continue

    temp1 = 0 # 모음
    temp2 = 0 # 자음
    target = "" # 이전 문자

    # 반복문을 통해 모음이 3개 혹은 자음이 3개 연속으로 나오는지 확인
    # + 같은 글자가 연속적으로 두번 나오는지 확인(ee와 oo는 제외)
    for i in word:
        if i in aeiou:
            temp1 += 1
            temp2 = 0
        else:
            temp1 = 0
            temp2 += 1

        if target == i:
            if target != "e":
                if target != "o":
                    flag = False
                    break
        else:
            target = i

        if temp1 == 3 or temp2 == 3:
            flag = False
            break

    if flag:
        print("<{0}> is acceptable.".format("".join(word)))
    else:
        print("<{0}> is not acceptable.".format("".join(word)))

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com