SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
C++ 원툴 유저로 ,, 이런 string 문제만나면 울어요 정말 ,,
풀이
문제는 어렵지 않았지만 예외처리를 생각못해서 조금 헤맸습니다.
주어진 문자열과 찾아야할 문자열을 한글자씩 비교해가는데 만약 두 글자가 다르다면 찾아야할 문자열을 첫 글자부터 다시 주어진 문자열은 다음 글자부터 비교하면 된다.
근데 여기서 내가 간과했던 것이 만약 주어진 문자열 i번째와 i-1번째가 같다면? 이것이었다.
만약 같다면 찾아야할 문자열을 첫번째 글자부터가 아닌 두번째부터 찾아주면 된다. 이 예외처리하고 나니 깔끔하게 PASS했다 !
#include <iostream>
#include <string>
using namespace std;
int main(){
for (int i = 1; i <= 10; i++) {
int ans = 0; // 정답
int trash = 0; cin >> trash;
string find_str, search_str;
cin >> find_str >> search_str;
string tmp = "";
int flag = 0;
for (int i = 0; i < search_str.size(); i++) {
if (find_str[flag] == search_str[i]) { // 한글자씩 확인
flag++;
tmp += search_str[i];
}
else {
if (i > 0 && search_str[i] == find_str[0] ) {
tmp = search_str[i];
flag = 1;
}
else {
tmp = "";
flag = 0;
}
}
if (tmp == find_str) { // 찾았을 때
ans += 1;
flag = 0;
tmp = "";
}
}
cout << "#" << i << " " << ans << endl;
}
return 0;
}
'Algorihtm > SWEA' 카테고리의 다른 글
C++ SWEA 2814. 최장 경로 (0) | 2023.11.17 |
---|---|
C++ SWEA 1493. 수의 새로운 연산 (0) | 2023.11.16 |
C++ SWEA 2817. 부분 수열의 합 (0) | 2023.11.12 |
C++ SWEA 1289. 원재의 메모리 복구하기 (0) | 2023.11.09 |
C++ SWEA 1860. 진기의 최고급 붕어빵 (0) | 2023.11.08 |
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
C++ 원툴 유저로 ,, 이런 string 문제만나면 울어요 정말 ,,
풀이
문제는 어렵지 않았지만 예외처리를 생각못해서 조금 헤맸습니다.
주어진 문자열과 찾아야할 문자열을 한글자씩 비교해가는데 만약 두 글자가 다르다면 찾아야할 문자열을 첫 글자부터 다시 주어진 문자열은 다음 글자부터 비교하면 된다.
근데 여기서 내가 간과했던 것이 만약 주어진 문자열 i번째와 i-1번째가 같다면? 이것이었다.
만약 같다면 찾아야할 문자열을 첫번째 글자부터가 아닌 두번째부터 찾아주면 된다. 이 예외처리하고 나니 깔끔하게 PASS했다 !
#include <iostream>
#include <string>
using namespace std;
int main(){
for (int i = 1; i <= 10; i++) {
int ans = 0; // 정답
int trash = 0; cin >> trash;
string find_str, search_str;
cin >> find_str >> search_str;
string tmp = "";
int flag = 0;
for (int i = 0; i < search_str.size(); i++) {
if (find_str[flag] == search_str[i]) { // 한글자씩 확인
flag++;
tmp += search_str[i];
}
else {
if (i > 0 && search_str[i] == find_str[0] ) {
tmp = search_str[i];
flag = 1;
}
else {
tmp = "";
flag = 0;
}
}
if (tmp == find_str) { // 찾았을 때
ans += 1;
flag = 0;
tmp = "";
}
}
cout << "#" << i << " " << ans << endl;
}
return 0;
}
'Algorihtm > SWEA' 카테고리의 다른 글
C++ SWEA 2814. 최장 경로 (0) | 2023.11.17 |
---|---|
C++ SWEA 1493. 수의 새로운 연산 (0) | 2023.11.16 |
C++ SWEA 2817. 부분 수열의 합 (0) | 2023.11.12 |
C++ SWEA 1289. 원재의 메모리 복구하기 (0) | 2023.11.09 |
C++ SWEA 1860. 진기의 최고급 붕어빵 (0) | 2023.11.08 |