본문 바로가기

CS/알고리즘

[c++] [프로그래머스]크기가 작은 문자열 [성공]

#include <string>
#include <vector>

using namespace std;

int solution(string t, string p) {
    int answer = 0;
    int pLen= p.length(); //문자열 p의 길이
    int tLen=t.length(); 
    
    for (int i=0; i<tLen-pLen+1; i++)
    {
        string part= t.substr(i,pLen);
        long partN=stol(part);
        long pN=stol(p);
        
        if (partN<=pN)
        {
            answer++;
        }
    }
    return answer;
}

substr이랑 stoi 다루는 법 제대로 알아두는 데 도움이 됐다.

접근은 쉽게 했는데 strcpy를 쓰려다가 그러면 부분문자열을 part변수에 담을 수가 없어서 한번 실패함.

 

substr사용해서 성공.

 

배운 점

1. string part= t.substr(i,pLen) 

2. string형에서 int형을 사용하려면 stoi함수를 사용한다. string->long은 stol.

3. 1 ≤ p의 길이 ≤ 18인데 숫자의 길이가 18이면 int의 범위를 넘을 수 있다!

long과 stol 사용!