반응형
https://www.acmicpc.net/problem/2195
2195번: 문자열 복사
첫째 줄에 S, 둘째 줄에 P가 주어진다. S와 P는 영어 대소문자와 숫자로만 되어 있다. S의 길이는 1,000을 넘지 않으며, P의 길이는 1,000을 넘지 않는다. copy함수만을 이용하여 S에서 P를 만들어낼 수
www.acmicpc.net
[ 문제풀이 ]
1. for문을 통해서 P문자열의 처음부터 끝까지 돌면서 S문자열과 비교합니다.
2. P문자열과 S문자열의 문자가 같으면 S문자열의 idx를 하나씩 증가시키면서 가장 긴 문자열을 찾고 max에 갱신시켜줍니다.
3. for문에서 i값을 max-1만큼 더해주고 위의 과정을 반복합니다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include<iostream> #include<cstring> using namespace std; int lenS, lenP; char S[1001]; char P[1001]; int main() { scanf("%s %s", S, P); lenS = strlen(S); lenP = strlen(P); int cur = 0; int ans = 0; for (int i = 0; i < lenP; i++) { int Max = 0; for (int j = 0; j < lenS; j++) { int cnt = 0; int a = 0; while (S[j+a] == P[i+a]) { if (S[j + a] == 0) break; cnt++; a++; } Max = max(Max, cnt); } i += Max-1; ans++; } printf("%d", ans); } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 2281번 - 데스노트 (C++) (0) | 2022.11.09 |
---|---|
[ 백준 ] 7569번 - 토마토 (C++) (0) | 2022.11.08 |
[ 백준 ] 2253번 - 점프 (C++) (0) | 2022.11.06 |
[ 백준 ] 14002번 - 가장 긴 증가하는 부분 수열 4 (C++) (0) | 2022.11.05 |
[ 백준 ] 1577번 - 도로의 개수 (C++) (0) | 2022.11.04 |