Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 브루트포스
- 다이나믹 프로그래밍
- javascript
- 그래프 이론
- 문자열
- 완전탐색
- 자바스크립트
- 너비우선탐색
- Python
- BFS
- 데이터베이스
- 프로그래머스
- 그래프 탐색
- 백트래킹
- 오라클
- 브루트포스 알고리즘
- 다익스트라
- DP
- 깊이우선탐색
- SW Expert Academy
- 구현
- 백준알고리즘
- oracle
- 파이썬
- 백준 알고리즘
- SWEA
- 너비 우선 탐색
- 스택
- DFS
- 그리디 알고리즘
Archives
- Today
- Total
민규의 흔적
[Python 파이썬] SWEA 1215번 - [S/W 문제해결 기본] 3일차 - String 본문
2024년 5월 14일
문제 링크 : [Python 파이썬] SWEA 1215번 - [S/W 문제해결 기본] 3일차
문제 접근
전형적인 패턴매칭 알고리즘 문제이다.
전체 문자열 S가 주어지고 부분 문자열 P가 주어졌을 때, S 안에 P가 몇 개 존재하는지 알아내면 되는 문제이다.
문자열 S의 맨 앞에서부터 문자를 하나씩 선택하며, 해당 문자를 시작으로 P의 길이만큼 슬라이싱하여 이 것이 패턴 P와 같은지 확인하기엔 너무 불필요한 연산이 많아진다.
그래서 나는 S의 각 문자가 P의 첫 번째 글자와 같은지 확인 후 같다면 해당 문자부터 P 길이만큼 슬라이싱하여 P와 대조해보는 방식을 택했다.
순서도
1. 전체 문자열 S와 패턴 P를 입력 받는다.
2. S의 맨 앞에서부터 문자를 하나씩 탐색하며 P의 첫 문자와 같은지 확인한다.
2-1. 만약 같다면 S의 해당 문자에서부터 P의 길이만큼 슬라이싱하여 P와 대조한다.
2-2. 대조하여 같다면 개수를 1 증가시킨다.
3. 총 개수를 출력한다.
입력 예제
1
ti
Starteatingwellwiththeseeighttipsforhealthyeating,whichcoverthebasicsofahealthydietandgoodnutrition
출력 예제
#1 4
전체 코드
def solution():
p_len = len(p)
s_len = len(s)
cnt = 0
for i in range(s_len - p_len + 1):
if s[i] == p[0]:
compair = s[i: i + p_len]
if compair == p:
cnt += 1
return cnt
T = 10
for _ in range(1, T + 1):
test_case = int(input())
p = input()
s = input()
print(f'#{test_case} {solution()}')
'SWEA' 카테고리의 다른 글
[Python 파이썬] SWEA 5607번 - [Professional] 조합 (0) | 2024.05.16 |
---|---|
[Python 파이썬] SWEA 11315번 - 오목 판정 (0) | 2024.05.14 |
[Python 파이썬] SWEA 1860번 - 진기의 최고급 붕어빵 (0) | 2024.05.10 |
[Python 파이썬] SWEA 1216번 - [S/W 문제해결 기본] 3일차 - 회문2 (0) | 2024.05.10 |
Python 파이썬] SWEA 1220번 - [S/W 문제해결 기본] 5일차 - Magnetic (0) | 2024.05.08 |