728x90

문제

문자열 S의 부분 문자열이란, 문자열의 연속된 일부를 의미한다.

예를 들어, "aek", "joo", "ekj"는 "baekjoon"의 부분 문자열이고, "bak", "p", "oone"는 부분 문자열이 아니다.

문자열 S와 P가 주어졌을 때, P가 S의 부분 문자열인지 아닌지 알아보자.

입력

첫째 줄에 문자열 S, 둘째 줄에 문자열 P가 주어진다. 두 문자열은 빈 문자열이 아니며, 길이는 100만을 넘지 않는다. 또, 알파벳 소문자로만 이루어져 있다.

출력

P가 S의 부분 문자열이면 1, 아니면 0을 출력한다.

예제 입력 1 복사

baekjoon aek

예제 출력 1 복사

1


부분 문자열이 있는지 없는지 판별하는 문제다.

나는 str의 find 함수를 쓰려 했는데 시간 초과가 떴다.

검색해보니 더 빠른 함수가 있어서 그걸 썼다.

<string.h>의 strstr이라는 함수였다. 두 개의 char * 를 매개변수로 받아서 만약 부분 문자열이 있다면 해당 포인터를 반환하고 없다면 NULL을 반환한다. 이 함수를 써서 간단하게 해결할 수 있었다.

 

 

코드 원본 : https://github.com/chosh95/STUDY/blob/master/BaekJoon/2020/%EB%B6%80%EB%B6%84%20%EB%AC%B8%EC%9E%90%EC%97%B4%20(16916%EB%B2%88).cpp

 

chosh95/STUDY

프로그래밍 문제 및 알고리즘 정리. Contribute to chosh95/STUDY development by creating an account on GitHub.

github.com

 

C++ 코드

#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
string a, b;

int main()
{
	cin >> a >> b;
	if (strstr((char*)a.c_str(), (char*)b.c_str()) == NULL)
		cout << 0;
	else
		cout << 1;
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 소수&팰린드롬 (1747번)  (0) 2020.08.24
[백준] 생태학 (4358번)  (0) 2020.08.24
[백준] 불! (4179번)  (0) 2020.08.24
[백준] 벽 부수고 이동하기 2 (14442번)  (0) 2020.08.24
[백준] 히스토그램 (1725번)  (0) 2020.08.21

+ Recent posts