제이슨의 개발이야기

프로그래머스 모음사전 코틀린 위클리 챌린지 5주차 본문

코딩테스트

프로그래머스 모음사전 코틀린 위클리 챌린지 5주차

제이쓰은 2021. 9. 2. 11:23
728x90
반응형

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

 

728x90
반응형