프로그래머스 모음사전 Kotlin
DoDoBest
·2024. 4. 25. 13:59
https://school.programmers.co.kr/learn/courses/30/lessons/84512
로직
각 자릿수는 A E, I, O, U, 없음 총 6개가 가능합니다.
사전에서 문자열 사이의 공백을 허용하지 않으므로 A(없음)A와 같은 것은 불가능합니다.
경우의 수
5번째 자릿수까지 고정 시키고 가능한 경우의 수 = 1
4번째 자릿수 ~ = 1 + 5
3번째 자릿수 ~ = 1 + 5*1 + 5*5*1
2번째 자릿수 ~ = 1 + 5*1 + 5*5*1 + 5*5*5*1
1번째 자릿수 ~ = 1 + 5*1 + 5*5*1 + 5*5*5*1 + 5*5*5*5*1
EIO ->
(A)XXXX -> 781
E -> 1
E(A,E)XXX -> 2*(156) = 312
EI -> 1
EI(A,E,I)XX -> 3*31 = 93
EIO -> 1
AAAAE
A -> 1
AA -> 1
AAA -> 1
AAAA -> 1
AAAA(A) -> 1
AAAAE -> 1
class Solution {
fun solution(word: String): Int {
var answer = 0
for (idx in word.indices) {
answer += (nums[word[idx]]!!-1) * possibleTable[idx+1]!!
answer += 1 // word에 해당하는 값도 포함해야 함 ex) AAAAE 라면 A, AA, AAA, AAAA, AAAAE를 포함해야 함
}
return answer
}
companion object {
private val nums = mapOf(
'A' to 1,
'E' to 2,
'I' to 3,
'O' to 4,
'U' to 5,
)
private val possibleTable = mapOf(
1 to 781, // 1 + 5*1 + 5*5*1 + 5*5*5*1 + 5*5*5*5*1
2 to 156, // 1 + 5*1 + 5*5*1 + 5*5*5*1
3 to 31, // 1 + 5*1 + 5*5*1
4 to 6, // 1 + 5*1
5 to 1, // 1
)
}
}
'코딩테스트' 카테고리의 다른 글
리트코드 994 Rotting Oranges - Kotlin 타입에 따른 시간 단축 팁 (0) | 2024.11.28 |
---|---|
Kotlin 카카오 주차 요금 계산 - ConcurrentModificationException, HashMap, hashing (4) | 2024.09.04 |
프로그래머스 2개 이하로 다른 비트 Kotlin (0) | 2024.04.25 |
Leetcode 42. Trapping Rain Water (0) | 2024.04.12 |
프로그래머스 시간 측정 오류와 H-Index 문제 (0) | 2024.04.09 |