문제 설명

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분 문자열 중에서, 이 부분 문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 구하기

 

문제 풀이법

처음에는 stoi, stol로만 풀었다가 제출시 code dump가 떠서 하나씩 비교하려고 했다

그렇게 되면 좀 더 복잡해져서 포기하려던 찰나, stoll에 대해서 발견하였다

 

long는 안되고 long long 타입으로 변환해야했던 것이다

 

부분 문자열의 총 개수는 t의 길이 + p의 길이 + 1이다

나올 수 있는 부분 문자열만큼, 부분 문자열을 구하고, 그 값을 변환하여 비교하는 과정을 반복해준다

 

소스 코드

#include <string>
#include <cmath>

using namespace std;

int solution(string t, string p) {
    long answer = 0;
    
    int pp = p.size();
    int tt = t.size();

    long long n = stoll(p);
    for (int i = 0; i < tt - pp + 1; i++)
    {
        string str = "";
        for (int j = 0 ; j < pp; j++)
            str += t[i + j];
        
        long long tmp = stoll(str);
        if (tmp <= n)
            answer++;
            
    }
    
    return answer;
}

'Algorithm Study' 카테고리의 다른 글

[백준] 10773 제로  (0) 2023.01.12
[백준] 10828 스택  (0) 2023.01.12
[프로그래머스] 1단계 - 실패율  (0) 2023.01.11
[프로그래머스] 1단계 - 소수 찾기  (0) 2023.01.11
[프로그래머스] 1단계 - 폰켓몬  (0) 2023.01.10
복사했습니다!