728x90
시간 제한 1초, 메모리 제한 512MB
# 조건
- 문자열 S의 부분 문자열이란, 문자열의 연속된 일부를 의미한다.
- 예를 들어, "aek", "joo", "ekj"는 "baekjoon"의 부분 문자열이고, "bak", "p", "oone"는 부분 문자열이 아니다.
- 문자열 S와 P가 주어졌을 때, P가 S의 부분 문자열인지 아닌지 알아보자.
입력
- 첫째 줄에 문자열 S, 둘째 줄에 문자열 P가 주어진다.
- 두 문자열은 빈 문자열이 아니며, 길이는 100만을 넘지 않는다.
- 또, 알파벳 소문자로만 이루어져 잇다.
출력
- P가 S의 부분 문자열이면 1, 아니면 0을 출력한다.
# 접근 방법
- word의 시작 단어와 같은 곳을 target에서 찾는다면 모든 단어를 체크해주는 것과 같이
- 브루트 포스로 푸는 경우 최악의 상황은 100만의 제곱이 될수도 있다.
- 보다 쉽게 생각해서 입력을 리스트가 아닌 string으로 받고, in을 활용하여 풀어주면 O(N)의 시간만에 풀 수 있다.
import sys
input = sys.stdin.readline
target = input().rstrip()
word = input().rstrip()
print(1 if word in target else 0)
728x90
'ALGORITHM > 정렬, 탐색,구현' 카테고리의 다른 글
[백준 1348번] 파이썬 - 주차장 (0) | 2023.08.09 |
---|---|
[백준 2632번] 파이썬 - 피자판매 (0) | 2023.08.08 |
[백준 25907번] 파이썬 - 양과 늑대 (0) | 2023.08.04 |
[프로그래머스 Lv3] 파이썬 - 파괴되지 않은 건물 (0) | 2023.08.03 |
[백준 1182번] 파이썬 - 부분 수열의 합 (0) | 2023.07.24 |