반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/147355
풀이
문자열의 길이가 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;
}
반응형
'Programming Solve > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 바탕화면 정리 / C++ (0) | 2023.03.04 |
---|---|
프로그래머스 - 가장 가까운 같은 글자 / C++ (0) | 2022.12.28 |
프로그래머스 - 삼총사 / C++ (0) | 2022.12.24 |
프로그래머스 - 숫자 짝꿍 / C++ (0) | 2022.12.24 |
프로그래머스 - 성격 유형 검사하기 / C++ (0) | 2022.12.24 |