제이슨의 개발이야기
프로그래머스 모음사전 코틀린 위클리 챌린지 5주차 본문
https://programmers.co.kr/learn/courses/30/lessons/84512
코딩테스트 연습 - 5주차
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니
programmers.co.kr
안녕하세요 ! 오늘은 위클리 챌린지 5주차 모음 사전이란 문제를 풀어봤습니다!
이 문제는 레벨 2 문제였지만 저한테는 엄청 어려웠던 문제였습니다 ㅠㅠ 진짜...
풀었지만 이런 문제를 또 만나게 되면 내가 또 풀 수 있을까? 란 생각이 드네요 .....
문제 설명
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
제한사항
- word의 길이는 1 이상 5 이하입니다.
- word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.
입출력 예
word | result |
"AAAAE" | 6 |
"AAAE" | 10 |
"I" | 1563 |
"EIO" | 1189 |
이 문제 설명은 굉장히 심플합니다
각 단어의 순서를 리턴하라는 문제였는대
저 같은 경우 아무리 봐도... 규칙이라든가 어떻게 이 문제를 풀기 위해 어떤 알고리즘으로 접근해야하나 란 생각이 전혀 들지 않았던 문제였습니다 !
그러던 와중 어떤 블로그를 보고 나서 힌트를 얻게 되고 다시 스스로 고민해보고 문제를 풀어봤습니다
생각해보니깐
@@@@A -> @@@@E -> @@@@I -> @@@@O -> @@@@U 는 1씩 증가하는 패턴이고
@@@A->@@@E->@@@I.... 는 6씩 증가하는 패턴을 알게 되었습니다 !
즉 각 자리수 마다 증가하는 패턴이 존재하다는 것을 의미합니다 !
즉 그 다음은 5*6+1 하면 31씩 증가한다는 것을 알 수 있습니다!
그 다음은 31*5+1=156 씩 증가합니다
그 다음은 156*5+1 = 781
그렇다면 왜 5를 곱하고 1을 더 할까요?
5는 모음의 갯수이고 마지막 1을 더하는 이유는 해당 자리에 공백이 오는 경우(공백이 오는경우가 딱 한번이라서)를 더하기 때문입니다
이러한 패턴을 이용해서
각 자리수
A=0 , E=1 , I = 2 , O=3 , U =4 라고 하고
각 자리수 별로 곱해서 더하면 정답이 나옵니다!
class Solution {
fun solution(word: String): Int {
var answer = 0
var number = HashMap<Char,Int>()
number.put('A',0)
number.put('E',1)
number.put('I',2)
number.put('O',3)
number.put('U',4)
var array = arrayOf(781,156,31,6,1)
for(i in word.indices){
answer = answer+ number[word[i]]!! * array[i]+1
}
return answer
}
}
제가 힌트를 받은 블로그 링크를 밑에 달아두겠습니다!
https://fomaios.tistory.com/573
[Swift] 프로그래머스 위클리 챌린지 5주차 모음 사전
Problem 코딩테스트 연습 - 5주차 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"
fomaios.tistory.com
'코딩테스트' 카테고리의 다른 글
프로그래머스 올바른 괄호 자바 (0) | 2021.09.02 |
---|---|
프로그래머스 주식가격 자바 (0) | 2021.09.02 |
프로그래머스 직업군 추천하기 위클리 챌린지 4주차 (0) | 2021.08.28 |
프로그래머스 최댓값 과 최소값 코틀린 kotlin (0) | 2021.08.24 |
[프로그래머스] 가장 큰 수 Kotlin (0) | 2021.08.21 |