문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/147355
숫자로 이루어진 문자열 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 |