[프로그래머스/C++]Lv.1 - 크기가 작은 부분 문자열

지용현·2023년 5월 9일

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/147355

내 풀이

일단 p의 길이가 최대 18이므로 int는 벗어나므로 double을 사용
p를 stod로 double로 변환
for문을 돌리면서 p의 길이만큼을 stod로 double로 변환 한 뒤 값이 작은지 비교한다.

내 코드

#include <string>
#include <vector>

using namespace std;

int solution(string t, string p) {
    int answer = 0;
    double pnum = stod(p);
    double tnum;
    for(int i = 0; i <= t.length() - p.length(); i++)
    {
        tnum = stod(t.substr(i, p.length()));
        if(tnum <= pnum)
            answer++;
    }
    return answer;
}

다른 사람의 풀이

#include <bits/stdc++.h>
using namespace std;

int solution(string t, string p) 
{
    int answer = 0;
    int length = p.length();
    long long int intP = stoll(p);

    for (int i = 0; i <= t.length() - length; ++i)
    {
        string number = t.substr(i, length);
        long long int intNumber = stoll(number);
        if (intNumber <= intP)
        {
            ++answer;
        }
    }
    return answer;
}

다른 사람의 풀이 해석

double대신 longlong int를 사용

profile
게임 개발자 지망생

0개의 댓글