크기가 작은 부분문자열
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
입출력 예
"3141592" | "271" | 2 |
"500220839878" | "7" | 8 |
"10203" | "15" | 3 |
1 ≤ p의 길이 ≤ 18
p의 길이 ≤ t의 길이 ≤ 10,000
t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.
반복문으로 p 문자열 크기에 맞는 t 문자열에서의 문자를 맨 앞에서부터 잘라서 비교합니다. 이때 주의할 점은 문자열을 숫자로 변환할 때 오버플로가 발생하지 않도록 unsigned long long과 stoull()를 사용합니다.
풀이
#include <string>
using namespace std;
int solution(string t, string p) {
int answer = 0;
unsigned long long tmp = stoull(p);
for(int i=0; i < t.size() - p.size() + 1; i++){
string tmp_s = "";
for(int j=0; j < p.size(); j++){
tmp_s += t[i+j];
}
//int num = stoi(string(1, t[i]));
unsigned long long num = stoull(tmp_s);
if(num <= tmp) answer ++;
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[C++] 가장 가까운 같은 글자 (0) | 2024.06.22 |
---|---|
[C++] 문자열 겹쳐쓰기 (replace) (0) | 2024.06.15 |
[C++] 추억 점수 (0) | 2023.09.18 |
[C++] 뒤에 있는 큰 수 찾기 (0) | 2023.09.15 |
[C++] (우선순위 큐) 큰 숫자만 계속 고르기 (0) | 2023.07.28 |
댓글