🔗 문제 링크
📖 풀이 과정
- 규칙을 이해하는 과정이 많이, 오래, 걸렸던 구현 유형의 문제입니다.
- 다른 분들 풀이를 보니, 재귀로 푼 분들도 있었습니다.
- 'A'는 1번, 'AA'는 2번, 'AAA'는 3번, ... , 'AAAAE'는 6번, 'I'는 1563번, 'EIO'는 1189번 입니다.
- 모음은 'AEIOU' 5개로 고정되어있습니다. 또한 주어지는 문자열의 길이는 5 이하입니다.
- 따라서, 마지막 5번째 자리의 모음이 사전순으로 앞에 있는 것으로 변경될때 +1씩 해야 합니다.
- 그러므로 4번째 자리의 모음이 사전순으로 앞에 있는 것으로 변경될 때 + 6을 해야 합니다.
- 왜냐하면, 4번째 자리 + 1 -> 5번째 자리의 모음 (AEIOU) 의 경우 모두를 따져야 하기 때문이죠.
- 'I'는 1563번입니다. (예제)
- 이를 통해 규칙을 구하면 {781, 156, 31, 6, 1} (기존의 값 * 5 + 1)이라는 것을 알 수 있습니다.
- 따라서, 이 규칙을 적용하여 주어진 문자열을 앞에서부터 더해가며 순서를 확인하여 반환합니다.
- 저 또한, 이 규칙을 구하는 과정이 오래 걸렸고, 다른 분들의 풀이를 봐서 확실히 이해를 더 할 수 있었...던..
💻 코드
public class Solution {
static int[] strIdx = {781, 156,31, 6, 1};
static String str = "AEIOU";
public static int solution(String word) {
int answer = word.length();
for(int i = 0; i< word.length(); i++){
int idx = str.indexOf(word.charAt(i));
answer += strIdx[i] * idx;
}
return answer;
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 피로도 (Java) (0) | 2022.02.20 |
---|---|
프로그래머스 : 문자열 압축 (Java) (0) | 2022.02.18 |
프로그래머스 : 단체사진 찍기 (Java) (0) | 2022.02.17 |
프로그래머스 : 숫자 문자열과 영단어 (Java) (0) | 2022.02.15 |
프로그래머스 : 신고 결과 받기 (Java) (0) | 2022.02.15 |