본문 바로가기

알고리즘/백준 문제 풀이

[Python] 4659번 비밀번호 발음하기

728x90

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

 

4659번: 비밀번호 발음하기

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

www.acmicpc.net


 

24/01/13

 

 

살짝 구현량이 있는 구현 문제이지만, 문제에서 요구하는 것을 그대로 구현하면 쉽게 해결할 수 있는 문제다.


 

문제 접근 방식:

 

 

문제에서 요구하는 세 가지 조건을 판단해야 한다.

 

첫번째, 모음을 포함하고 있을 것.

 

두 번째, 모음 3개 또는 자음 3개가 연속으로 오면 안 될 것.

 

세 번째, 같은 글자가 연속으로 두 번 오면 안 될 것, 다만 'ee'나 'oo'는 예외다.

 

이 세 가지 조건을 판단하는 judge함수를 구현했다.

 

답을 출력할 때 주의해야 할 점은 마침표를 적어야 한다는 점. 이건 예제 입출력을 복붙하면 될 것 같다.

  


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더 보기를 누르면 확인할 수 있다.

더보기
# 4659번 비밀번호 발음하기
# 구현, 문자열
import sys
input = sys.stdin.readline

def judge(string):
    vowels = ['a', 'e', 'i', 'o', 'u']
    for vowel in vowels:
        if vowel in string:
            break
    else:
        return False
    for i in range(len(string)-2):
        a, b, c = string[i], string[i+1], string[i+2]
        if (a in vowels) and (b in vowels) and (c in vowels):
            return False
        if (a not in vowels) and (b not in vowels) and (c not in vowels):
            return False
    for i in range(len(string)-1):
        a, b = string[i], string[i+1]
        if a == b and a != 'e' and a != 'o':
            return False
    return True

while True:
    string = input().rstrip()
    if string == 'end':
        break
    if judge(string):
        print(f'<{string}> is acceptable.')
    else:
        print(f'<{string}> is not acceptable.')

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

[Python] 1038번 감소하는 수  (0) 2024.01.23
[Python] 31229번 또 수열 문제야  (0) 2024.01.22
[Python] 14395번 4연산  (0) 2024.01.21
[Python] 31218번 자료 구조의 왕  (0) 2024.01.20
[Python] 31217번 Y  (0) 2024.01.10