Stay Hungry Stay Foolish

SWEA

[SWEA] 1213. [S/W 문제해결 기본] 3일차 - String (Python/D3)

dev스카이 2024. 10. 22. 10:23

[문제 링크] 👇

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 


 

풀이

sol.1

 

슬라이싱으로 특정 문자열 찾기

if sentence[i : i + len(word)] == word:
	result += 1
  • sentence의 i번째 위치부터 i + len(word) 길이만큼 잘라낸 부분이 word와 같은지 확인합니다. 이 부분이 word와 같다면, 해당 위치에서 word가 발견된 것입니다.

 

루프 종료 조건

if i == len(sentence) - len(word) + 1:
    break
  • i가 sentence에서 더 이상 word를 탐색할 수 없는 위치에 도달하면 루프를 종료합니다. 이 조건은 문자열의 끝에서 더 이상 word가 들어갈 수 없는 위치를 의미합니다.
  • 조건을 만족하면 루프를 종료합니다.

 

sol.2

특정 문자열로 분할 후 리스트 생성

sen_split = sentence.split(word)

 

  • sentence를 word로 분할하여 리스트로 만듭니다. split() 함수는 지정한 문자열을 기준으로 문장을 나누어 리스트로 반환합니다.
  • 예를 들어, sentence가 "abcabcabc"이고 word가 "abc"라면, sentence.split(word)는 ["", "", "", ""]가 됩니다.

 

특정 문자열 횟수 구하기

result = str(len(sen_split) - 1)
  • sen_split 리스트의 길이를 구한 후, 그 길이에서 1을 뺀 값이 word의 등장 횟수입니다. 분할된 리스트의 길이는 word가 등장한 횟수보다 1 더 많기 때문에 1을 빼줍니다.

 

 

 

Solution

sol.1

for tc in range(10):
    tc_num = int(input())
    word = input().strip()
    sentence = input().strip()
    result = 0
    i= 0
    while True:
        if sentence[i:i + len(word)] == word:
            result += 1
        i += 1
        if i == len(sentence) - len(word) + 1:
            break
    print("#%d %s" % (tc_num, result))

 

sol.2

for tc in range(10):
    tc_num = int(input())
    word = input().strip()
    sentence = input().strip()
    sen_split = sentence.split(word)
    result = str(len(sen_split) - 1)
    print("#%d %s" % (tc_num, result))

 

 

👩‍💻 회고

split()으로 특정 문자열 기준으로 분리할 수 있다는 것..! 기억해두자