본문 바로가기
  • 머킹이의 머신로그
오늘부터 코딩테스트

[오늘부터 코딩테스트]파이썬으로 프로그래머스 코딩 기초 프로그램 풀기

by 머킹 2023. 10. 25.
728x90

[파이썬] 프로그래머스 Lv0. 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기, 문자열이 몇 번 등장하는지 세기

안녕하세요 머킹입니다.

오랜만인 것 같습니다! 저는 내일 발표를 앞두고 열심히 ppt도 만들고 했답니다ㅎㅎ


특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

 

문제 설명

문자열 myString과 pat가 주어집니다. 

myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.

 

def solution(myString, pat):
    return myString[:len(myString) - myString[::-1].index(pat[::-1])]

이렇게 풀었는데 신기한 풀이법이 있었습니다.

 

solution=lambda x,y:x[:x.rindex(y)+len(y)]

rindex, rfind를 사용하는데요.

찾고자 하는 인덱스나 문자열을 뒤에서부터 찾는 거라고 하네요.

파이썬의 대단함을 또 한 번 느낍니다.

 


문자열이 몇 번 등장하는지 세기

 

문제 설명

문자열 myString과 pat이 주어집니다. 

myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.

 

def solution(myString, pat):
    answer = 0
    start = 0
    while start < len(myString):
        index = myString.find(pat, start)
        if index != -1:
            answer += 1
            start = index + 1
        else:
            break
            
    return answer

저는 약간 어렵게 푼 것 같습니다.

while 문을 안 쓰고 풀 수 있을 것 같은데 풀릴 듯 말 듯하더라고요.

 

def solution(myString, pat):
    answer = 0
    for i, x in enumerate(myString) :
        if myString[i:].startswith(pat) :
            answer += 1
    return answer

다른 사람의 풀이를 보니까 이해가 되네요....

enumerate 진짜 언젠가는 꼭 쓴다..