#25501
주어진 코드 이해 (recursion , isPalindrom)
int recursion(const char* s, int l, int r) {
//글자수가 0 or 1일 경우 (글자수 음수일 경우도 포함되지만 발생 x)
if (l >= r) return 1;
//시작과 끝의 문자가 다를 경우
else if (s[l] != s[r]) return 0;
// (그 외) 시작과 끝의 문자가 같을 경우 끝으로부터 하나 안쪽으로 해서 다시 recursion 호출
else return recursion(s, l + 1, r - 1);
}
int isPalindrome(const char* s) {
return recursion(s, 0, strlen(s) - 1);
}
code
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int recursion_count=0;
int recursion(string s, int l, int r) {
recursion_count++;
if (l >= r) return 1;
else if (s[l] != s[r]) return 0;
else return recursion(s, l + 1, r - 1);
}
int isPalindrome(string s) {
return recursion(s, 0, s.length() - 1);
}
int main() {
int num_of_string;
cin >> num_of_string;
vector<string> str(num_of_string);
for (int i = 0;i < num_of_string;i++) {
cin >> str[i];
}
for (int i = 0;i < num_of_string;i++) {
cout << isPalindrome(str[i]) << " " << recursion_count << endl;
recursion_count = 0;
}
}
출력은 제대로 나오는데 시간초과가 뜬다....ㅜㅜ vector 써서 그런가....
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int recursion_count = 0;
int isPalindrome(string s) {
int l = 0;
int r = s.length() - 1;
while (l < r) {
++recursion_count;
if (s[l] != s[r]) return 0;
++l; --r;
}
++recursion_count;
return 1;
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int num_of_string;
cin >> num_of_string;
vector<string> str(num_of_string);
for (int i = 0; i < num_of_string; i++) {
cin >> str[i];
}
for (int i = 0; i < num_of_string; i++) {
cout << isPalindrome(str[i]) << " " << recursion_count << endl;
recursion_count = 0;
}
return 0;
}
해결!...
'Coding > Step By Step' 카테고리의 다른 글
Baekjoon Training / #5597 / ing (0) | 2023.02.11 |
---|---|
Baekjoon Training / Algorithm(math) / #11653 / ing (1) | 2023.02.10 |
Baekjoon Training / sort / #25305 (2) | 2023.02.08 |
Baekjoon Training / 2차원 vector / #2738 (2) | 2023.02.07 |
Baekjoon Training / string / #1110 (1) | 2023.02.06 |