728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/84512#
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
처음에는 각 문자가 자릿수별로 채워질 때 매핑되는 수가 있기 때문에, 그걸 찾으려고 했다.
(ex. 'I'가 1번째 자리인 경우 1563번째)
근데 못찾겠어서 그냥 문자 자릿수를 하나씩 올리는 완전 탐색으로 풀었다.
#include <string>
#include <vector>
using namespace std;
// 다음 문자 반환 함수
char Next(const char InChar)
{
switch (InChar)
{
case 'A': return 'E';
case 'E': return 'I';
case 'I': return 'O';
case 'O': return 'U';
}
return 0;
}
int solution(string word)
{
int answer = 1;
string Str = "A";
while (Str != word)
{
// 순번 증가
answer++;
// 문자열의 길이가 5보다 작으면 A추가
if (Str.size() < 5) Str.push_back('A');
// 마지막 문자가 U가 아니면 다음 문자로 변경
else if (Str[Str.size() - 1] != 'U')
{
char Cur = Str[Str.size() - 1];
Str[Str.size() - 1] = Next(Cur);
}
else
{
// 마지막 문자가 U가 아닐 때 까지 문자 제거
while (Str[Str.size() - 1] == 'U' && !Str.empty())
{
Str.pop_back();
}
// 다음 문자로 변경
char Cur = Str[Str.size() - 1];
Str[Str.size() - 1] = Next(Cur);
}
}
return answer;
}
728x90
반응형
'📕알고리즘 문제 > 📝Programmers' 카테고리의 다른 글
| [프로그래머스] Level 2 : 테이블 해시 함수 (0) | 2025.10.15 |
|---|---|
| [프로그래머스] Level 2 : 행렬 테두리 회전하기 (0) | 2025.10.01 |
| [프로그래머스] Level 2 : 혼자 놀기의 달인 (1) | 2025.09.23 |
| [프로그래머스] Level 2 : 서버 증설 횟수 (0) | 2025.09.19 |
| [프로그래머스] Level 2 : 연속 부분 수열 합의 개수 (0) | 2025.09.18 |