1. ๋ฌธ์
์ฌ์ ์ ์ํ๋ฒณ ๋ชจ์ 'A', 'E', 'I', 'O', 'U'๋ง์ ์ฌ์ฉํ์ฌ ๋ง๋ค ์ ์๋, ๊ธธ์ด 5 ์ดํ์ ๋ชจ๋ ๋จ์ด๊ฐ ์๋ก๋์ด ์์ต๋๋ค. ์ฌ์ ์์ ์ฒซ ๋ฒ์งธ ๋จ์ด๋ "A"์ด๊ณ , ๊ทธ๋ค์์ "AA"์ด๋ฉฐ, ๋ง์ง๋ง ๋จ์ด๋ "UUUUU"์
๋๋ค.
๋จ์ด ํ๋ word๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด ๋จ์ด๊ฐ ์ฌ์ ์์ ๋ช ๋ฒ์งธ ๋จ์ด์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
2. ์ฝ๋
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> nums;
string aeiou[5]={"A","E","I","O","U"};
void repeatPermutation(string s, int maxLength)
{
if(maxLength==s.size()) //๋ฌธ์์ด์ ํฌ๊ธฐ == ์ฑ์ธ ๋ฌธ์์ด ํฌ๊ธฐ
{
nums.push_back(s);
return; //์ฌ๊ทํจ์ ์ข
๋ฃ
}
for(int i=0;i<5;i++){
repeatPermutation(s+aeiou[i],maxLength); //์ฌ๊ทํจ์ ํธ์ถ
}
}
int solution(string word) {
int answer = 0;
for(int i=1;i<=5;i++){
repeatPermutation("",i);
}
sort(nums.begin(), nums.end());
for(int i=0;i<nums.size();i++){
if(word==nums[i]){
answer=i;
break;
}
}
return answer+1;
}
3. ํด์ค
vector<string> nums;
string aeiou[5]={"A","E","I","O","U"};
void repeatPermutation(string s, int maxLength)
{
if(maxLength==s.size()) //๋ฌธ์์ด์ ํฌ๊ธฐ == ์ฑ์ธ ๋ฌธ์์ด ํฌ๊ธฐ
{
nums.push_back(s);
return; //์ฌ๊ทํจ์ ์ข
๋ฃ
}
for(int i=0;i<5;i++){
repeatPermutation(s+aeiou[i],maxLength); //์ฌ๊ทํจ์ ํธ์ถ
}
}
int solution(string word) {
int answer = 0;
for(int i=1;i<=5;i++){
repeatPermutation("",i);
}
์ฌ๊ท ํจ์๋ฅผ ํตํด์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ฅํฉ๋๋ค.
๊ฒฝ์ฐ์ ์๋ 1์๋ฆฌ์ผ ๋, 2์๋ฆฌ์ผ ๋, 3์๋ฆฌ์ผ ๋, 4์๋ฆฌ์ผ ๋, 5์๋ฆฌ์ผ ๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํด์ผํฉ๋๋ค.
๋ฐ๋ผ์ 1์๋ฆฌ์ ๊ฒฝ์ฐ
for(int i=0;i<5;i++){
repeatPermutation(s+aeiou[i],maxLength); //์ฌ๊ทํจ์ ํธ์ถ
}
์ด ๋ถ๋ถ์ด aeiou[0] ~aeiou[4] ๊น์ง์ ๊ฐ์ด ํ๋ฒ์ฉ ํธ์ถ ๋๋ฉด์ ๋๋ฉ๋๋ค.
2์๋ฆฌ์ ๊ฒฝ์ฐ ์์ for๋ฌธ์ด aeiou[0]+aeiou[0]~aeiou[4] ์์๋ถํฐ aeiou[4]+aeiou[0]~aeiou[4] ๊น์ง ๊ณ์ฐํจ์ผ๋ก ์ด 25๊ฐ์ง์ ๋ฌธ์์ด์ด ์ ์ฅ๋ฉ๋๋ค.
์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก 5์๋ฆฌ์ ๊ฒฝ์ฐ๊น์ง ์ฌ๊ทํจ์๋ฅผ ํตํด ์ ์ฅํฉ๋๋ค.
sort(nums.begin(), nums.end());
for(int i=0;i<nums.size();i++){
if(word==nums[i]){
answer=i;
break;
}
}
return answer+1;
}
๊ทธ ํ, ์ฌ์ ์ ๋ฐฐ์ด๋ก ๋์ดํด์ค์ผํฉ๋๋ค.
๊ธฐ์กด์ ์ ์ฅ๋ ๋ฐฐ์ด์ A,E,I,O,U,AA,AE,AI,AO,AU.... ๋ฑ์ ์์๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.(ํจ์ ํธ์ถ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ผ๋ (1์๋ฆฌ์...2์๋ฆฌ์...3์๋ฆฌ์.... ๋ก ์ ์ฅ)
๊ธฐ๋ณธ์ ์ผ๋ก sort ํจ์๋ string ๋ณ์์์ ์ฌ์ ์ ์์๋ก ์ ๋ ฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ํ๋ณ ํจ์๋ฅผ ๋ฃ์ง ์์๋ ๋ฉ๋๋ค.
๊ทธ ํ for๋ฌธ์ ํตํด ๋ฐ์ word ๊ฐ๊ณผ nums[i]์ ๊ฐ์ด ๊ฐ๋ค๋ฉด ํด๋น ๋ฒํธ๋ฅผ ๋ฝ์๋
๋๋ค.
๋ฒกํฐ๋ 0๋ฒ๋ถํฐ ์์ํ๊ธฐ์ +1์ ํด์ฃผ๋ฉด ๋ช๋ฒ์งธ ์์ธ์ง๋ฅผ ๋์ถํ ์ ์์ต๋๋ค.
โป for๋ฌธ์ ์ฐ์ง ์๊ณ find() ํจ์๋ฅผ ํตํด์ ํ์ค๋ก ํด๊ฒฐํ ์๋ ์์ต๋๋ค.