프론트엔드 개발자 중규리 입니다 ദി ᷇ᵕ ᷆ ) 자세히보기

PS/문제풀이

백준 4659 비밀번호 발음하기 Python

중규리 2024. 2. 2. 15:15

🐸 문제 정보

 

4659번: 비밀번호 발음하기

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

www.acmicpc.net

 

🤖 알고리즘

구현

 

⏱️ 풀이 시간

22.01m

 

📝 풀이

실버 5임에도 구현이라 체감상 실버 2~3으로 느껴졌다.

문제에서 제시한 조건대로 빡구현하는 되는 문제였다.

모음의 경우 딕셔너리로 설저해놔서 시간복잡도를 줄였다.

 

🧑‍💻 나의 답

# pypy3

import sys
input = sys.stdin.readline

gather = {'a': True, 'e': True, 'i': True, 'o': True, 'u': True}

while True:
    pwd = input().rstrip()
    if pwd == 'end': exit()
    letters = []
    g_check, c_check, s_check = False, True, True
    for letter in pwd:
        if letter in gather:
            g_check = True
        if len(letters) < 1:
            letters.append(letter)
            continue
        if (letter == letters[-1]) and not (letter == 'e' or letter == 'o'):
            s_check = False
            break
        if len(letters) < 2:
            letters.append(letter)
            continue
        if (letters[-2] not in gather) and (letters[-1] not in gather) and (letter not in gather):
            c_check = False
            break
        if (letters[-2] in gather) and (letters[-1] in gather) and (letter in gather):
            c_check = False
            break
        letters.append(letter)
    if g_check and c_check and s_check:
        print(f"<{pwd}> is acceptable.")
    else:
        print(f"<{pwd}> is not acceptable.")

'PS > 문제풀이' 카테고리의 다른 글

백준 7682 틱택토 Python  (0) 2024.02.02
백준 17615 볼 모으기 Python  (0) 2024.02.02
백준 1806 부분합 Python  (2) 2024.01.28
백준 1138 한 줄로 서기 Python  (1) 2024.01.28
백준 2075 N번째 큰 수 Python  (1) 2024.01.27