본문 바로가기

알고리즘

프로그래머스 - 조이스틱(오답)

https://programmers.co.kr/learn/courses/30/lessons/42860#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

그리디 알고리즘은 많이 어렵네요..

테스트케이스 10,11을 통과하지 못해서 완벽한 풀이는 아닙니다.

다음에 다시 한번 도전해볼게요~

틀린이유는 좌우 이동을 완벽하게 구현하지 못해서입니다.

이 풀이에서는 만약 2번째 문자열이 A라면 왼쪽으로만 탐색하게 했습니다.

그런데 'AABBBBB'AAAA' 같은 반례도 존재하더라구요 ㅎㅎ

아래는 틀린 풀이입니다. 사실 알파벳 문자열을 다 저장하는 반복문도 필요 없는 부분입니다.

풀이 방법은 생각해냈는데 이제 저녁먹으러 갈 시간이랏... 다음에 풀어볼게요~ 

class Solution {
        public int solution(String name) {
            int answer = 0;
            char[] alpha = new char[26];
            int idx=0;
            for(int i=65; i<=90; i++){
                alpha[idx++] = (char) i;
            }
            idx = 0;
            for(int i=0; i<name.length(); i++){
                char temp = name.charAt(i);
                if(temp == 'A'){
                    idx++;
                }
                if(idx == name.length()){
                    return 0;
                }
            }

            for(int i=0; i<name.length(); i++){

                char temp = name.charAt(i);

                if(temp == 'A'){
                    continue;
                }

                if(temp-alpha[0] > alpha[25]-temp){
                    answer += alpha[25]-temp+1;
                    System.out.println(alpha[25]-temp+1);
                } else{
                    answer += temp-alpha[0];
                    System.out.println(temp-alpha[0]);
                }
            }

            if(name.charAt(1) == 'A'){
                answer--;
            }

            answer += name.length()-1;
            return answer;
        }
    }

'알고리즘' 카테고리의 다른 글

프로그래머스 - 큰 수 만들기  (0) 2020.04.17
프로그래머스 - 라면공장  (0) 2020.04.12
프로그래머스 - H - index  (0) 2020.04.12
프로그래머스 - k번째수  (0) 2020.04.12
프로그래머스 - 위장  (1) 2020.04.10