관리 메뉴

솜씨좋은장씨

[BaekJoon] 15904번 : UCPC는 무엇의 약자일까? (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 15904번 : UCPC는 무엇의 약자일까? (Python)

솜씨좋은장씨 2021. 10. 7. 00:17
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 15904번 UCPC는 무엇의 약자일까? 입니다.

 

15904번: UCPC는 무엇의 약자일까?

첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는

www.acmicpc.net

👨🏻‍💻 문제 풀이

이 문제는 문자열이 주어지면 이 문자열을 UCPC로 축약시킬 수 있는지 없는지를 보는 문제입니다.

apple 에서 a와 e를 빼서 ppl을 만들 수도 있고 

I love UCPC에서 I love를 제외하고 이를 UCPC로 축약시킬수도 있습니다.

다만 대소문자를 구분하여 UcPC와 UCPC는 다른 문자열입니다.

 

처음에는 각 단어의 첫 글자가 대문자 인 것만 뽑아서 UCPC가 되는지 안되는지 확인하려고 했으나

I love UCPC <- 이런 단어는 확인이 불가하여 

UCPC가 U, C, P, C 각 단어가 순서대로 나오는지 안나오는지를 확인하기로 했습니다.

check_alpha = ['U', 'C', 'P', 'C']

먼저 확인에 사용할 문자를 순서대로 리스트에 담아 둡니다.

result = "I love UCPC"

UCPC로 축약할 수 있음이 확인되었을때 출력할 I love UCPC를 먼저 result에 넣어둡니다.

for alpha in check_alpha:
    if alpha in word:
        alpha_index = word.index(alpha)
        word = word[alpha_index+1:]
    else:
        result = "I hate UCPC"
        break

그 다음 확인할 문자에서 문자를 하나씩 꺼내오면서 이 단어가 문자열에 들어있는지 안들어있는지

in 으로 확인하고

만약 들어있는게 확인되면 해당 문자열에서 처음으로 등장하는 위치의 인덱스를 꺼내온 다음

if alpha in word:
    alpha_index = word.index(alpha)
    word = word[alpha_index+1:]

문자열에 문자열에서 해당 단어가 발견된 위치 다음부터의 문자들만 남겨둡니다.

계속 이렇게 반복문을 진행하다가 문자가 문자열에 포함되지 않으면 정답에 I hate UCPC를 넣어주고 반복문을 종료합니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

def is_ucpc(word):
    check_alpha = ['U', 'C', 'P', 'C']

    result = "I love UCPC"
    
    for alpha in check_alpha:
        if alpha in word:
            alpha_index = word.index(alpha)
            word = word[alpha_index+1:]
        else:
            result = "I hate UCPC"
            break
        
    return result

if __name__ == "__main__":
    word = input()
    print(is_ucpc(word))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments