알고리즘

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

https://programmers.co.kr/learn/courses/30/lessons/84512

 

코딩테스트 연습 - 5주차

사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니

programmers.co.kr

 

< 위클리 챌린지 5주차 > 모음사전

알고리즘 : 순열 / 구현

풀이가 정말 다양한 문제입니다. 정답 제출 후 다른 사람의 풀이를 보니 이게 왜 되지..? 싶은 코드가 많은 것 같습니다.

시간제한이 넉넉하니 편한 방법으로 풀이하면 될 것 같습니다.

 

 

 

< CODE >

#include <iostream>
#include <string>
#include <vector>
#include <map>

using namespace std;

map<char, int> m;
int c[5] ={1,2,3,4,5};
string cur = "";

int chk[6][6][6][6][6];
vector<int> v(5,0);
int vSize = 0;

void createString()
{ 
    static int now = 1;
    
    if(vSize == 5)
        return;
    
    for(int i = 0; i < 5; i++)
    {
        v[vSize++] = c[i];
        
        chk[v[0]][v[1]][v[2]][v[3]][v[4]] = now++;
        
        createString();
        v[vSize--] = 0;
    }
}

int solution(string word) {
    int answer = 0;
    
    createString();
    
    m['A'] = 1;
    m['E'] = 2;
    m['I'] = 3;
    m['O'] = 4;
    m['U'] = 5;
    
    vector<int> cal;
    
    for(int j = 0; j < 5; j++)
    {
        if(j < word.length())
            cal.push_back(m[word[j]]);
        else
            cal.push_back(0);
    }
    
    answer = chk[cal[0]][cal[1]][cal[2]][cal[3]][cal[4]];
    
    return answer;
}

시간 : 통과

 

태그 : #프로그래머스 모음사전 #프로그래머스 위클리 챌린지 5주차 #위클리 챌린지 5주차 모음사전 #위클리챌린지 #프로그래머스 5주차 #모음사전 풀이