[문제 링크] 👇
풀이
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()으로 특정 문자열 기준으로 분리할 수 있다는 것..! 기억해두자
'SWEA' 카테고리의 다른 글
[SWEA] 10804. 문자열의 거울상 (Python/D3) (1) | 2024.10.22 |
---|---|
[SWEA] 4751. 다솔이의 다이아몬드 장식 (Python/D3) (0) | 2024.10.22 |
[SWEA] 3456. 직사각형 길이 찾기 (Python/D3) (0) | 2024.10.22 |
[SWEA] 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (Python/D3) (0) | 2024.10.21 |
[SWEA] 1220. [S/W 문제해결 기본] 5일차 - Magnetic (Python/D3) (0) | 2024.10.21 |