728x90
반응형
문제 출처 : https://www.acmicpc.net/problem/2195
2195번: 문자열 복사
첫째 줄에 S, 둘째 줄에 P가 주어진다. S와 P는 영어 대소문자와 숫자로만 되어 있다. S의 길이는 1,000을 넘지 않으며, P의 길이는 1,000을 넘지 않는다. copy함수만을 이용하여 S에서 P를 만들어낼 수
www.acmicpc.net
풀이
최소한의 copy를 사용해 s를 p로 만들 때, 사용 횟수를 출력하는 문제이다.
p를 반복문을 돌며 s에서 같은 부분을 찾은 후, 만약 같다면 그 뒤에도 같은지 계속 검사한다.
가장 길게 검사한 부분을 저장해 idx에 더해준다.
코드
#include <bits/stdc++.h>
using namespace std;
string s, p;
int main(void) {
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> s >> p;
int cnt = 0;
for(int i = 0; i < p.length();){
int max_len = 0;
for(int j = 0; j < s.length(); j++){
int tmp = 0;
while(s[j+tmp] == p[i+tmp])
tmp++;
max_len = max(max_len, tmp);
}
i += max_len;
cnt++;
}
cout << cnt << '\n';
return 0;
}
728x90
반응형
'Tech > Algorithm' 카테고리의 다른 글
[BOJ] 백준 4179 불! c++ (bfs) (0) | 2023.01.21 |
---|---|
[BOJ] 백준 16562 친구비 c++ (유니온 파인드) (0) | 2023.01.19 |
[프로그래머스] 이모티콘 할인행사 c++ / 2023 KAKAO BLIND RECRUITMENT (중복 조합 dfs) (0) | 2023.01.15 |
[BOJ] 백준 15591 MooTube (Silver) c++ (그래프 이론, bfs) (0) | 2023.01.15 |
[BOJ] 백준 1717 집합의 표현 c++ (유니온 파인드) (0) | 2023.01.14 |