https://www.acmicpc.net/problem/25501
이 문제는 isPalindrome함수를 활용해서 함수의 반환 값과 recursion 함수의 호출 횟수를 출력하는 문제이다.
우선 이 문제에서는 문자열을 사용하므로, stdio.h와 string.h를 불러온다.
#include <stdio.h>
#include <string.h>
이 문제를 쉽게 풀기 위해서 run_time이라는 전역 변수를 생성한다.
int run_time;
그 다음 이 문제에서 기본 적으로 준 recursion함수와 isPalindrome함수를 정의한다.
int recursion(const char *s, int l, int r){
if(l >= r) return 1;
else if(s[l] != s[r]) return 0;
else return recursion(s, l+1, r-1);
}
int isPalindrome(const char *s){
return recursion(s, 0, strlen(s)-1);
}
그리고 main함수에서 n을 입력받고, for문으로 문자열을 입력받고 결과 값을 출력한다.
int main(){
char s[1001];
int n, a;
scanf("%d", &n);
for (int i = 0; i < n; i++){
scanf("%s", &s);
a = isPalindrome(s);
printf("%d %d\n", a, run_time);
}
}
최종 코드
#include <stdio.h>
#include <string.h>
int run_time;
int recursion(const char *s, int l, int r){
run_time += 1;
if(l >= r) return 1;
else if(s[l] != s[r]) return 0;
else return recursion(s, l+1, r-1);
}
int isPalindrome(const char *s){
run_time = 0;
return recursion(s, 0, strlen(s)-1);
}
int main(){
char s[1001];
int n, a;
scanf("%d", &n);
for (int i = 0; i < n; i++){
scanf("%s", &s);
a = isPalindrome(s);
printf("%d %d\n", a, run_time);
}
}
'백준 C, C++ 문제' 카테고리의 다른 글
| 10870번, 피보나치 수 5 (0) | 2025.04.13 |
|---|---|
| 27433번, 팩토리얼 2 (0) | 2025.04.13 |
| 10871번, X보다 작은 수 (0) | 2025.04.08 |
| 10807번, 개수 세기 (0) | 2025.04.08 |
| 10818번, 최소, 최대 (0) | 2025.04.07 |