문제 설명
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
문제 유형
- 문자열 정수 변환
- 문자열 부분 분할
의사코드
- 문자열 P 길이를 저장할 변수(pSize)를 선언한다.
- 문자열 P를 정수형으로 변환 후 변수(pNum)에 저장한다.
- [반복문] 문자열 T길이 - pSize 만큼 반복한다.
- 문자열을 i인덱스에서 pSIze만큼 잘라내여 subT에 저장한다.
- subT를 정수형으로 변환한다.
- 변환한 값이 pNUm보다 작다면 result를 1증가한다.
- 결과값을 반환한다.
코드 작성
#include <string>
using namespace std;
int solution(string t, string p) {
int result = 0;
int pSize = p.length();
long long pNum = stoll(p);
for (int i = 0; i <= t.length() - pSize; i++)
{
string subT = t.substr(i, pSize);
if (stoll(subT) <= pNum)
result++;
}
return result;
}
사용한 함수
- 문자열 longlong타입 변환함수
- std::stoll(string);
- #include <string>
- 문자열 분할함수
- string.substr(startIndex, endIndex);
- #include <string>
'Algorithm > Practice' 카테고리의 다른 글
| [Algorithm] 시저 암호 (1) | 2024.12.27 |
|---|---|
| [Algorithm] 최소직사각형 (0) | 2024.12.27 |
| [Algorithm] 삼총사 (2) | 2024.12.26 |
| [Algorithm] 이상한 문자 만들기 (1) | 2024.12.26 |
| [Algorithm] 최대공약수와 최소공배수 (0) | 2024.12.23 |