Coding Test - cpp/String
[프로그래머스 lv 1 ] - 크기가 작은 부분문자열 (C++)
에드윈H
2023. 11. 16. 14:35
https://school.programmers.co.kr/learn/courses/30/lessons/147355
- 처음에 coredump 가 발생하였으나 p의 범위가 문제였다.
- stoi에서 stoll로 변경후 해결 -> p의 값 범위가 18'글자'라는 말에 헷갈렸으나 '숫자'의 길이로 int의 범위로 는 -2,147,483,647 ~ 2,147,483,647 최대 10글자이고, long long의 범위가 19글자이다. -2의 63승으로 (-9,223,372,036,854,775,808) 에서 263 - 1(9,223,372,036,854,775,807)
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(string t, string p) {
int answer = 0;
const int pSize = p.size();
const long long pValue = stoll(p);
for(int index = 0;index<t.size();index++)
{
//pSize 만큼 문자 자르기
const string cutStr = t.substr(index, pSize);
//검사 조건 초과되면 break;
if(cutStr.size() < pSize || t.size()<=index)
{
break;
}
// 문자열을 long long 타입으로 변환
const long long cutNum = std::stoll(cutStr);
//허용 범위인지
if(cutNum<=pValue)
{
answer++;
}
}
return answer;
}