어흥

[해커랭크] Alternating Characters (Java) 본문

알고리즘/HackerRank

[해커랭크] Alternating Characters (Java)

라이언납시오 2021. 3. 30. 18:02
728x90
반응형

 

문제 링크: www.hackerrank.com/challenges/alternating-characters/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=strings

 

Alternating Characters | HackerRank

Calculate the minimum number of deletions required to convert a string into a string in which consecutive characters are different.

www.hackerrank.com

1. 주의할 점

- 재귀형식으로 풀지 말것(최대 10^5번 → StackOverFlow 발생)

 

2. 구현

- 파라미터로 넘겨받은 문자열의 시작을 A 혹은 B로 지정해두고 Find_Result() 함수로 넘긴다

- Find_Result함수에선 현재 비교하려는 문자가 C가 아니라면 삭제의 개수를 나타내는 Cnt를 ++시킨다

- 만약 비교하려는 문자가 C라면, 삼항연산자를 통해 C의 값을 수정한다

- 함수의 Return값과 Result를 비교하여 최소값을 구한다

static int find_result(String s, char c){
        int cnt=0;
        for(int i=0;i<s.length();i++){
            char tc = s.charAt(i);
            if(tc!=c) cnt++;
            else{
                char next = c=='A'? 'B' : 'A';
                c = next;
            }
        }
        return cnt;
    }
    
    // Complete the alternatingCharacters function below.
    static int alternatingCharacters(String s) {
        int result=Integer.MAX_VALUE;
        result = Math.min(result,find_result(s,'A'));
        result = Math.min(result,find_result(s,'B'));
        return result;
    }
728x90
반응형
Comments