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 |