Programmers/Level 1
C++ / 프로그래머스 / 크기가 작은 부분 문자열
GitHubSeob
2023. 6. 20. 00:21
문제
https://school.programmers.co.kr/learn/courses/30/lessons/147355
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
먼저 string s에 p의 크기만큼 t[idx]를 입력받고 num 벡터에 저장한다.
idx를 1로 두고 idx + p.size() -1 가 t크기 보다 작을 때까지 탐색한다. (idx + p.size() -1 은 s의 끝자리 위치를 의미한다)
s의 첫 글자를 지우고, 새 글자를 하나 더하고 num 벡터에 저장한다.
탐색이 끝났으면 num 벡터를 탐색하면서 p이하인 수가 있을 때마다 answer에 1을 더한다.
탐색이 종료되면 답을 출력한다.
코드
#include <string>
#include <vector>
using namespace std;
int solution(string t, string p) {
int answer(0), idx(0);
vector<string>num;
string s("");
for (idx = 0; idx < p.size(); ++idx) {
s += t[idx];
}
num.push_back(s);
for (idx = 1; idx + p.size() - 1 < t.size(); ++idx) {
s.erase(s.begin());
s += t[idx + p.size() - 1];
num.push_back(s);
}
for (idx = 0; idx < num.size(); ++idx) {
if (num[idx] <= p)
answer++;
}
return answer;
}