Programming Solve/프로그래머스
프로그래머스 - 크기가 작은 부분 문자열 / C++
msm1029
2022. 12. 25. 19:52
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/147355
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
문자열의 길이가 10000이므로 정수로 변환해서 비교하는 것은 불가능하다.
따라서, p의 크기만큼 t를 잘라서 직접 비교한다.
우선 p와 t를 p의 크기만큼 자른 것이 일치하는지 확인하고 같다면 answer을 증가 시켜준 뒤 다음 인덱스로 넘어간다.
같지 않다면 한 자리씩 비교해나가며 p[j]보다 t[i + j]가 크다면 더 볼 필요 없이 t가 큰 값이므로 break 해주고
p[j]가 t[i + j]보다 작으면 더 볼 필요 없이 p가 작은 값이므로 answer을 증가 시켜준 뒤 break 해준다.
코드
#include <bits/stdc++.h>
using namespace std;
int solution(string t, string p) {
int answer = 0;
for(int i=0; i<=t.size() - p.size(); i++){
if(p == t.substr(i, p.size())){
answer++;
continue;
}
for(int j=0; j<p.size(); j++){
if(t[i + j] > p[j]) break;
if(t[i + j] < p[j]){
answer++;
break;
}
}
}
return answer;
}
반응형