Algorithm/Implement

4659번/ 비밀번호/ 문자열 (다시)

정호나 2025. 1. 6. 19:15

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

 

 

 

 

# 조건) aeiou 중 1개 반드시 포함, 
# 모음이나 자음 3개 연속안돼, 
# 같은 글자 2번연속 안돼(ee,oo는 가능)
# 대문자 안돼
# 마지막 테스트 케이스는 end

import sys




def is_acceptable(word):
    case =['a','e','i','o','u']

# 조건1: 모음 안에 1개 이상 있어야해
    if not any (char in case for char in word):
        return False
    
    # 조건2: 같은 글자 2개 연속 안돼
    for i in range(len(word)-1):
        if word[i] == word[i+1] and word[i:i+2] not in ('ee','oo'):
            return False
        
# 조건3 : 대문자 안돼
    if any(char.isupper() for char in word):
        return False
    

    # 조건4 : 모음이나 자음 3개 연속 안돼

    for i in range(len(word)-2):
        if all(char in case for char in word[i:i+3]) or all (char not in case for char in word[i:i+3]):
            return False
    
    return True


while True:
    word = sys.stdin.readline().rstrip()

    if word == 'end':
        break

    if is_acceptable(word):
        print(f"<{word}> is acceptable.")
    else:
        print(f"<{word}> is not acceptable.")

 

 

리뷰

 

1. 문자열 인덱스 범위넘어가지 않도록 for문에서 범위 설정

2. def -main 형태로 코드짜는 연습

3. 파이썬 출력문 format 익히기

4. 문제에서 조건 구현하는 연습 하기