달달한 스토리

728x90
반응형

 

출처 핀터레스트

 

 

처음 코딩 테스트 입문 때 11단계까지만 풀자 했는데.. 조금 늦었지만,

 

다 풀었다!!

 

라고 생각하는 순간 재귀와 정렬 쪽에서 문제가 추가되었다.

 

자주 문제가 추가되는 것 같긴 하다.

 

저것만 풀고 다음 단계로 넘어가자.

 

백준을 더 풀거나 프로그래머스 문제도 풀 생각이다.

 

저 11단계까지 문제가 무려 89문제나 된다.. ㅎㄷㄷ

 

아직 부족하다는 느끼지만, 더 풀어봐야 할 거 같다.

 

25501 문제는 거저 주는 느낌이 강했다.

 

코드를 살펴보자.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test25501 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();

        for(int i = 0; i < N; i++) {
            int[] values = isPalindromeArray(br.readLine());
            int isPalindrome = values[0];
            int recursionCnt = values[1];

            sb.append(isPalindrome).append(" ").append(recursionCnt).append("\n");
        }
        System.out.println(sb);
    }

    static int recursionCnt = 0;

    public static int[] recursion(String s, int l, int r){
        recursionCnt++;
        if(l >= r) {
            return new int[] {1, recursionCnt};
        }
        else if(s.charAt(l) != s.charAt(r)) {
            return new int[] {0, recursionCnt};
        }
        else return recursion(s, l+1, r-1);
    }

    public static int[] isPalindromeArray(String s){
        // recursionCnt 초기화
        recursionCnt = 0;
        return recursion(s, 0, s.length()-1);
    }
}

 

처음 문제 지문을 보면 

 

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

 

반응형

 

힌트로 위와 같은 코드를 제공해준다.

 

아주 문제를 거저 준다고 볼 수 있다.

 

isPalindrome의 대한 값은 반환해주니,

 

이 recursion 메서드가 호출된 횟수만 반환해 주면 된다.

 

어떻게 넘겨줄까 하다가

 

배열에 담아서 넘겨주는 방법을 선택했다.

 

static int recursionCnt = 0;

public static int[] recursion(String s, int l, int r){
    recursionCnt++;
    if(l >= r) {
        return new int[] {1, recursionCnt};
    }
    else if(s.charAt(l) != s.charAt(r)) {
        return new int[] {0, recursionCnt};
    }
    else return recursion(s, l+1, r-1);
}

public static int[] isPalindromeArray(String s){
    // recursionCnt 초기화
    recursionCnt = 0;
    return recursion(s, 0, s.length()-1);
}

 

이런 식으로 배열에 넘겨주어 isPalindrome의 여부와

 

recursionCnt의 대한 두 값을 넘겨줄 수 있게 되었다.

 

오늘 코테 끝!

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading