728x90

백준 16916 - 부분 문자열

시간 제한 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