728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 팰린드롬인지 파악하는 isPalindrome 함수의 반환값과 그 과정에서 호출된 recursion 함수의 횟수를 구해야 하는 문제이다. isPalindrome 함수의 반환값은 문제에서 주어진 함수를 그대로 가져오면 쉽게 구할 수 있다.
하지만 recursion 함수의 횟수는 구할 수 없다.
하여 각 함수에 cnt라는 새로운 인수를 추가하여 recursion 함수의 횟수를 저장한다.
recursion 함수에서 팰린드롬인지 아닌지 결과를 반환할 때, 기존 함수의 반환인 해당 결과와 recursion 함수의 횟수를 리스트로 묶어 반환한다.
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- cnt 인수를 추가한 recursion 함수를 정의한다. def recursion(s, l, r, cnt)
- recursion 함수의 횟수를 저장하는 cnt 값을 1 증가시킨다. cnt += 1
- 이후 함수의 내용은 동일하게 작성한다. if (l >= r)
- 여기서 반환할 때, 결과와 recursion 함수의 횟수를 리스트로 묶어 반환한다. return [1, cnt]
- 이후 함수의 내용은 동일하게 작성한다. elif (s[l] != s[r])
- 여기서도 반환할 때, 결과와 recursion 함수의 횟수를 리스트로 묶어 반환한다. return [0, cnt]
- 이후 함수의 내용은 동일하게 작성한다. else
- 여기서도 반환할 때, 기존 recursion 함수의 인수에 cnt를 추가하여 반환한다. return recursion(s, l+1, r-1, cnt)
- cnt 인수를 추가한 isPalindrome 함수를 정의한다. def isPalindrome(s, cnt)
- 반환할 때, 기존 recursion 함수의 인수에 cnt를 추가하여 반환한다. return recursion(s, 0, len(s)-1, cnt)
- 테스트케이스 개수를 입력받는다. T = int(sys.stdin.readline())
- 테스트케이스 개수만큼 반복하며 for _ in range(T)
- 알파벳 대문자로 이루어진 문자열을 입력받는다. S = sys.stdin.readline().rstrip()
- 최종 리스트로 반환되는 결과를 저장할 변수를 생성하고 isPalindrome 함수에 문자열 S와 초기 resursion 함수의 횟수를 인수로 주어 해당 결과를 저장한다. result = isPalindorme(S, 0)
- 리스트로 반환된 결과를 하나씩 출력한다. print(result[0], result[1])
반응형
3. 소스코드
import sys
def recursion(s, l, r, cnt):
cnt += 1
if (l >= r):
return [1, cnt]
elif (s[l] != s[r]):
return [0, cnt]
else:
return recursion(s, l+1, r-1, cnt)
def isPalindrome(s, cnt):
return recursion(s, 0, len(s)-1, cnt)
T = int(sys.stdin.readline())
for _ in range(T):
S = sys.stdin.readline().rstrip()
result = isPalindrome(S, 0)
print(result[0], result[1])
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 15651번 : N과 M (3) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.17 |
---|---|
[백준] 2447번 : 별 찍기 - 10 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.16 |
[백준] 4779번 : 칸토어 집합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.15 |
[백준] 24060번 : 알고리즘 수업 - 병합 정렬 1 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.14 |
[백준] 20920번 : 영단어 암기는 괴로워 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.12 |
[백준] 2108번 : 통계학 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.11 |
[백준] 26069번 : 붙임성 좋은 총총이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.10 |
[백준] 25192번 : 인사성 밝은 곰곰이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.09 |