문제/프로그래머스
c++ 프로그래머스_"5주차_모음사전"
나 진짜 못차마
2023. 6. 15. 09:20
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/84512?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
아에이오우
바베비보부
사세시소수
A E I O U 를 배열로 두고
그럼 A 의 index = 0
E 의 index = 1
J = 2
O = 3
U = 4
또 이 현재상태, 알파벳의 상태(index)를 저장하는 배열을
또 만들어 제일 처음 아무것도 없는
{-1 , -1 ,-1 ,-1 ,-1 } 다섯자리로 만들어줍니다
그리고 진행될 때마다 1 증가시켜주고
경우에 따라 빼주고 하면서
-1이 아닌 경우에만 거기에 해당하는 알파벳을 붙여
같다면 return 해줍니다.
코드에는 아무 것도 없는 " " 상태에 while 이 한번 돌아서 (answer++ 하기 때문에)
return 할 때 answer -1 을 해줍니다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(string word) {
int answer = 0;
char alphabet[] = { 'A','E','I','O','U' };
int index[] = { -1,-1,-1,-1,-1 };
int i = -1;
while (1) {
string str = "";
for (int j = 0; j < 5; j++) {
if (index[j] != -1) {
str += alphabet[index[j]];
}
}
if (str == word)
break;
if (i == 5) {
i--;
index[i]++;
if (index[i] == 5) {
while (index[i] == 5) {
index[i] = -1;
i--;
index[i]++;
}
i++;
}
}
else {
index[i]++;
i++;
}
answer++;
}
return answer-1;
}
728x90