문제 설명
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
제한사항
- 1 ≤ p의 길이 ≤ 18
- p의 길이 ≤ t의 길이 ≤ 10,000
- t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.
풀이 방법
1. 문자열 t에서 문자열 p와 길이가 같은 부분을 문자열 str에 담는 반복문을 작성한다.
2. compare함수를 통해 p와 str을 비교하여 크기가 작거나 같으면 answer값에 1을 더해준다.
3. 문자열 str을 비우고 다시 반복한다.
4. 반복문이 끝나면 answer를 리턴
#include <string>
#include <vector>
using namespace std;
int solution(string t, string p) {
int answer = 0;
string str = "";
for(int i = 0; i + p.length() - 1 < t.length(); i++){
for(int j = i; j < i + p.length(); j++){
str += t.at(j);
}
if (p.compare(str) >= 0) answer++;
str.clear();
}
return answer;
}
'프로그래머스 > 1레벨' 카테고리의 다른 글
문자열 다루기 기본 (0) | 2022.12.26 |
---|---|
나머지가 1이 되는 수 찾기 (0) | 2022.12.26 |
정수 내림차순으로 배치하기 (0) | 2022.12.25 |
자연수 뒤집어 배열로 만들기 (2) | 2022.12.25 |
자릿수 더하기 (0) | 2022.12.25 |