[프로그래머스]/python

[프로그래머스] 코딩테스트 연습> 코딩 기초 트레이닝> 문자열이 몇 번 등장하는지 세기

0_TLS 2024. 1. 9. 21:13

<문제 보기>

더보기

 

문자열 myString과 pat이 주어집니다. myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.


제한사항

  • 1 ≤ myString ≤ 1000
  • 1 ≤ pat ≤ 10

입출력 예

myStringpatresult

"banana" "ana" 2
"aaaa" "aa" 3

입출력 예 설명

입출력 예 #1

  • "banana"에서 1 ~ 3번 인덱스에서 한 번, 3 ~ 5번 인덱스에서 또 한 번 "ana"가 등장해서 총 두 번 등장합니다. 따라서 2를 return 합니다.

입출력 예 #2

  • "aaaa"에서 0 ~ 2번 인덱스에서 한 번, 1 ~ 3번 인덱스에서 한 번, 2 ~ 4번 인덱스에서 한 번 "aa"가 등장해서 총 세 번 등장합니다. 따라서 3을 return 합니다.

<나의 풀이>

def solution(myString, pat):
    answer = 0
    for i in range(len(myString)):
        print(myString[i:i+len(pat)])
        if pat == myString[i:i+len(pat)]:
            answer += 1
    return answer

 

 

*find

string.find(찾을 문자)
string.find(찾을 문자, 시작 Index)
string.find(찾을 문자, 시작 Index, 끝 Index)

문자열에 찾을 문자가 존재하면 해당 문자의 index를 반환하고, 존재하지 않을 경우 -1 반환

 

def solution(myString, pat):
    answer = 0
    for i in range(myString.find(pat), len(myString)):
        if myString[i:i+len(pat)].count(pat) == 1:
            answer += 1
    return answer

 

*startswith

string.startswith(시작하는 문자, 시작 Index)
string.endswith(끝나는 문자, 시작 Index, 끝 Index)

문자열이 특정 문자로 시작하는지 알려줌( 또는 특정 문자로 끝나는지)

해당 문자로 시작하면 true, 아니면 false반환

 

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