
해당 문제를 풀기위해 단어조합을 먼저 그려보았다.
다는 아니지만 나열해보면 아래와같다.
['A', 'AA', 'AAA', 'AAAA', 'AAAAA', 'AAAAE', 'AAAAI', 'AAAAO', 'AAAAU', 'AAAE', 'AAAEA', 'AAAEE', 'AAAEI',
'AAAEO', 'AAAEU', 'AAAI', 'AAAIA', 'AAAIE', 'AAAII', 'AAAIO', 'AAAIU', 'AAAO', 'AAAOA', 'AAAOE', 'AAAOI',
'AAAOO', 'AAAOU', 'AAAU', 'AAAUA', 'AAAUE', 'AAAUI', 'AAAUO', 'AAAUU', 'AAE', 'AAEA', 'AAEAA', 'AAEAE',
'AAEAI', 'AAEAO', 'AAEAU', 'AAEE', 'AAEEA', 'AAEEE', 'AAEEI', 'AAEEO', 'AAEEU', 'AAEI', 'AAEIA', 'AAEIE', 'AAEII', 'AAEIO', 'AAEIU'...]
단어 조합이 너무 많이 나와서 쓰다가 말았다.
여기서 시간을 많이 잡은것 같다.
그래서 다른 블로그 글을 참조하게 되었는데, 단어의 패턴이 있다고 했다.
먼저 단어가 5자리일때,
'AAAAA', 'AAAAE', 'AAAAI', 'AAAAO', 'AAAAU' =>이렇게 순서가 1씩 커지고,
4자리일때
'AAAA' .. 'AAAE' .. 'AAAI' .. =>6씩 커진다
3자리일때
'AAA' .. ' 'AAE' .. 31씩 커진다.(5*6+1)
각 자리마다 증가 패턴이 존재했고,
그 다음은 31*5+1씩 증가한다.
https://jason-api.tistory.com/102
프로그래머스 모음사전 코틀린 위클리 챌린지 5주차
https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 5주차 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서
jason-api.tistory.com
5를 곱하고 1을 더하는 이유는 5는 모음의 갯수이고 마지막 1을 더하는 이유는 해당 자리에 공백이 오는 경우 공백이 오는 경우가 딱 한 번이라서 더하는거라고 한다.
그래서 해당 패턴을 이용해서
각 자리수를 A = 0 /E = 1/ I =2 / O = 3/U =4
라고하면 각 자리수 별로 곱해서 더하면 정답이 나온다고한다.
나는 아래와 같이 코드를 작성했다.
class Solution {
fun solution(word: String): Int {
var answer = 0
val array = intArrayOf(781, 156, 31, 6, 1)
val number = mapOf('A' to 0, 'E' to 1, 'I' to 2, 'O' to 3, 'U' to 4)
for (i in word.indices) {//word = "AAAAE"
answer += number[word[i]]!! * array[i] + 1
}
return answer
}
}

'TIL > kotlin 알고리즘' 카테고리의 다른 글
| kotlin 프로그래머스 lv2 롤케이크 자르기 (0) | 2024.03.20 |
|---|---|
| kotlin 프로그래머스 lv2 뒤에 있는 큰 수 찾기 (0) | 2024.03.19 |
| kotlin 프로그래머스 lv2 2022 KAKAO BLIND RECRUITMENT주차 요금 계산 (0) | 2024.03.18 |
| kotlin 프로그래머스 lv2 k진수에서 소수 개수 구하기 (0) | 2024.03.15 |
| kotlin 프로그래머스 lv2 타겟넘버 (0) | 2024.03.15 |