문제출처: https://www.acmicpc.net/problem/1543


풀이

정답률이 예상외로 낮네요.. 아마도 c언어로 구현하는데 문자열을 입력할 때 공백까지 포함해서 입력받는법을 모르셨거나, c++로 구현시 공백을 감안하지않은 분들이 많았기 때문일겁니다. 저는 c++ string 으로 구현하였는데, 문자열입력시 getline함수만 사용하면 쉽게 풀리는 것 같습니다!


코드

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string s1, s2;
	getline(cin, s1);
	getline(cin, s2);
	int cnt = 0;
	if (s1.size() < s2.size())
	{
		cout << 0 << endl;
		return 0;
	}
	for (int i = 0; i <= s1.size()-s2.size();)
	{
		bool check = true;
		for (int j = 0; j < s2.size(); j++)
		{
			if (s1[i + j] != s2[j])
			{
				check = false;
				break;
			}
		}
		if (check)
		{
			cnt++;
			i += s2.size();
		}
		else
			i++;
	}
	cout << cnt << endl;
}


결과





'문제풀이(BOJ) > 문자열' 카테고리의 다른 글

[백준 1296] 데이트  (0) 2020.01.13
[백준 8892] 팰린드롬  (0) 2020.01.10
[백준 11008] 복붙의 달인  (0) 2020.01.10
[백준 12780] 원피스  (0) 2020.01.10
[백준 2535] 아시아 정보올림피아드(클래스 연습)  (0) 2020.01.06

+ Recent posts