C++:: 프로그래머스 <크기가 작은 부분 문자열>

jahlee·2023년 3월 22일
0

프로그래머스_Lv.1

목록 보기
8/75
post-thumbnail

조건

1 ≤ p의 길이 ≤ 18
p의 길이 ≤ t의 길이 ≤ 10,000
t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.

p 와 t에서 p의 길이만큼 자른 부분 문자열을 숫자로 변환하면 최대 18자릿수 까지 나오기 때문에
int 말고 long long 으로 해주어야한다. 범위를 자세히 안보고 int형으로 풀다가 시간을 버렸다.
함수만 제대로 사용하면 정말 쉬운문제이다.

#include <string>
#include <vector>
using namespace std;

int solution(string t, string p)
{
    int t_len=t.size(), p_len=p.size();
    long long num = stoll(p);//stoi를 하면 int형을 넘어간 문자열이 들어오므로 abort된다.
    int answer = 0;
    for(int i=0;i<(t_len-p_len+1);i++)
        if (stoll(t.substr(i,p_len)) <= num) answer++;
    return answer;
}

0개의 댓글