[Baekjoon] 25501 - πŸ§μž¬κ·€μ˜ κ·€μž¬

ChobbyΒ·2023λ…„ 11μ›” 24일
1

Baekjoon

λͺ©λ‘ 보기
98/108

πŸ˜€λ¬Έμ œ

μ •νœ˜λŠ” 후배듀이 μž¬κ·€ ν•¨μˆ˜λ₯Ό 잘 λ‹€λ£¨λŠ” μž¬κ·€μ˜ κ·€μž¬μΈμ§€ μ•Œμ•„λ³΄κΈ° μœ„ν•΄ μž¬κ·€ ν•¨μˆ˜μ™€ κ΄€λ ¨λœ 문제λ₯Ό μΆœμ œν•˜κΈ°λ‘œ ν–ˆλ‹€.

νŒ°λ¦°λ“œλ‘¬μ΄λž€, μ•žμ—μ„œλΆ€ν„° μ½μ—ˆμ„ λ•Œμ™€ λ’€μ—μ„œλΆ€ν„° μ½μ—ˆμ„ λ•Œκ°€ 같은 λ¬Έμžμ—΄μ„ λ§ν•œλ‹€. νŒ°λ¦°λ“œλ‘¬μ˜ μ˜ˆμ‹œλ‘œ AAA, ABBA, ABABA 등이 있고, νŒ°λ¦°λ“œλ‘¬μ΄ μ•„λ‹Œ λ¬Έμžμ—΄μ˜ μ˜ˆμ‹œλ‘œ ABCA, PALINDROME 등이 μžˆλ‹€.

μ–΄λ–€ λ¬Έμžμ—΄μ΄ νŒ°λ¦°λ“œλ‘¬μΈμ§€ νŒλ³„ν•˜λŠ” λ¬Έμ œλŠ” μž¬κ·€ ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλ‹€. μ•„λž˜ μ½”λ“œμ˜ isPalindrome ν•¨μˆ˜λŠ” 주어진 λ¬Έμžμ—΄μ΄ νŒ°λ¦°λ“œλ‘¬μ΄λ©΄ 1, νŒ°λ¦°λ“œλ‘¬μ΄ μ•„λ‹ˆλ©΄ 0을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ‹€.

#include <stdio.h>
#include <string.h>

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);
}

int main(){
    printf("ABBA: %d\n", isPalindrome("ABBA")); // 1
    printf("ABC: %d\n", isPalindrome("ABC"));   // 0
}

μ •νœ˜λŠ” μœ„μ— μž‘μ„±λœ isPalindrome ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ–΄λ–€ λ¬Έμžμ—΄μ΄ νŒ°λ¦°λ“œλ‘¬μΈμ§€ μ—¬λΆ€λ₯Ό νŒλ‹¨ν•˜λ €κ³  ν•œλ‹€.

κ΅¬μ²΄μ μœΌλ‘œλŠ”, λ¬Έμžμ—΄
SSλ₯Ό isPalindrome ν•¨μˆ˜μ˜ 인자둜 μ „λ‹¬ν•˜μ—¬ νŒ°λ¦°λ“œλ‘¬ μ—¬λΆ€λ₯Ό λ°˜ν™˜κ°’μœΌλ‘œ μ•Œμ•„λ‚Ό 것이닀. λ”λΆˆμ–΄ νŒλ³„ν•˜λŠ” κ³Όμ •μ—μ„œ recursion ν•¨μˆ˜λ₯Ό λͺ‡ 번 ν˜ΈμΆœν•˜λŠ”μ§€ μ…€ 것이닀.

μ •νœ˜λ₯Ό 따라 μ—¬λŸ¬λΆ„λ„ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’κ³Ό recursion ν•¨μˆ˜μ˜ 호좜 횟수λ₯Ό κ΅¬ν•΄λ³΄μž.


πŸ˜μž…λ ₯

첫째 쀄에 ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€μ˜ 개수
TTκ°€ 주어진닀. (
1≀T≀1 0001 \leq T \leq 1\,000)

λ‘˜μ§Έ 쀄뢀터
TT개의 쀄에 μ•ŒνŒŒλ²³ λŒ€λ¬Έμžλ‘œ κ΅¬μ„±λœ λ¬Έμžμ—΄
SSκ°€ 주어진닀. (
1β‰€βˆ£Sβˆ£β‰€1 0001 \leq \vert S\vert \leq 1\,000)


πŸ˜‚μΆœλ ₯

각 ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€λ§ˆλ‹€, isPalindrome ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’κ³Ό recursion ν•¨μˆ˜μ˜ 호좜 횟수λ₯Ό ν•œ 쀄에 곡백으둜 κ΅¬λΆ„ν•˜μ—¬ 좜λ ₯ν•œλ‹€.


🀣예제

예제 μž…λ ₯ 1 
5
AAA
ABBA
ABABA
ABCA
PALINDROME
예제 좜λ ₯ 1 
1 2
1 3
1 3
0 2
0 1

πŸ˜ƒνžŒνŠΈ

def recursion(s, l, r):
    if l >= r: return 1
    elif s[l] != s[r]: return 0
    else: return recursion(s, l+1, r-1)

def isPalindrome(s):
    return recursion(s, 0, len(s)-1)

print('ABBA:', isPalindrome('ABBA'))
print('ABC:', isPalindrome('ABC'))

public class Main{
    public static int recursion(String s, int l, int r){
        if(l >= r) return 1;
        else if(s.charAt(l) != s.charAt(r)) return 0;
        else return recursion(s, l+1, r-1);
    }
    public static int isPalindrome(String s){
        return recursion(s, 0, s.length()-1);
    }
    public static void main(String[] args){
        System.out.println("ABBA: " + isPalindrome("ABBA"));
        System.out.println("ABC: " + isPalindrome("ABC"));
    }
}

πŸ˜„μΆœμ²˜

  • High School > 선린인터넷고등학ꡐ > 2022 μ„ λ¦° 정보 μ•Œκ³ λ¦¬μ¦˜κ²½μ‹œλŒ€νšŒ A번
  • 문제λ₯Ό κ²€μˆ˜ν•œ μ‚¬λžŒ: cgiosy, chansol, junseo, kyo20111, ryute, stonejjun03
  • 문제λ₯Ό λ§Œλ“  μ‚¬λžŒ: jhnah917

πŸ˜…μ•Œκ³ λ¦¬μ¦˜ λΆ„λ₯˜

  • κ΅¬ν˜„
  • λ¬Έμžμ—΄
  • μž¬κ·€

πŸ˜Žλ‚˜μ˜ν’€μ΄

let callCount = 0

function recursion(s, l, r) {
    if(l === 0) callCount = 0
    callCount++
    if(l >= r) return 1;
    else if(s[l] !== s[r]) return 0;
    else return recursion(s, l+1, r-1);
}

function isPalindrome(s){
    return recursion(s, 0, s.length-1);
}

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n")
input.shift()
const result = input.map((a, i) => {
    return `${isPalindrome(a)} ${callCount}`
})

console.log(result.join("\n"))
profile
λ‚΄ 지식을 κ³΅μœ ν•  수 μžˆλŠ” λŒ€λ‹΄ν•¨

0개의 λŒ“κΈ€