백준25501.재귀의 귀재(팰린드롬,재귀함수)

Hyoyoung Kim·2023년 5월 20일
0

재귀함수 어렵다 어렵워..

isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력해야한다.

변수 count를 선언하고 0을 할당한다음에 recursion함수에 들어갈때마다 1씩 증가하도록 코드를 적었다.

입력예시

5
AAA
ABBA
ABABA
ABCA
PALINDROME

👍 방법1.

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(filePath).toString().trim().split('\r\n')

input.shift()
let count = 0

 const recursion=(str,n,m)=>{
     count++
     //  m이 n보다 작거나 같다는것은 재귀함수를 계속 지나서 같게 되었으니
     // 모든 조건을 통과한 팰린드롬이라서 1이다.
     if(n>=m) return 1
     else if(str[n]!==str[m])return 0
     else return recursion(str,n+1,m-1)
}


const isPalindrome=(str)=>{
     return recursion(str,0,str.length-1)
 }
 for(let x of input){
     count = 0
    console.log(isPalindrome(x),count)
}

👍 방법 2.

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(filePath).toString().trim().split('\r\n')

input.shift()

const recursion=(str,n,m,c)=>{
    if(n>=m) return [1, c]
    else if(str[n]!==str[m])return [0,c] 
    else return recursion(str,n+1,m-1,c+1)
}


const isPalindrome=(str)=>{
    return recursion(str,0,str.length-1,1)
}
let answer = input.map(x=>isPalindrome(x).join(' '))

console.log(answer.join('\n'))

0개의 댓글