간단한 구현 문제이다.
좀 간단한 코드로 풀어보고 싶었는데 언어의 한계와 두뇌의 한계로 조건문 떡칠해서 해결했다.
핵심은 영단어 앞에 한 개 혹은 두 개 알파벳만 확인하면 어떤 숫자로 치환해야할지 알 수 있다는 것이다.
어떤 숫자로 치환해야 할 지 알았다면, (알파벳 수 - 1)만큼 jump해준다.
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
for (int i = 0; i < s.size(); ++i) {
int next = 0;
if (s[i] >= '0' && s[i] <= '9') next = (s[i] - '0');
else {
if (s[i] == 'z') next = 0, i += 3;
else if (s[i] == 'o') next = 1, i += 2;
else if (s[i] == 't') {
if (s[i + 1] == 'w') next = 2, i += 2;
else next = 3, i += 4;
}
else if (s[i] == 'f') {
if (s[i + 1] == 'o') next = 4, i += 3;
else next = 5, i += 3;
}
else if (s[i] == 's') {
if (s[i + 1] == 'i') next = 6, i += 2;
else next = 7, i += 4;
}
else if (s[i] == 'e') next = 8, i += 4;
else if (s[i] == 'n') next = 9, i += 3;
}
answer = answer * 10 + next;
}
return answer;
}
'프로그래머스 > 2021 카카오 채용연계형 인터십' 카테고리의 다른 글
[프로그래머스] [카카오] 표 편집 (C++) (0) | 2021.08.05 |
---|---|
[프로그래머스] [카카오] 거리두기 확인하기 (C++) (0) | 2021.08.02 |