본문 바로가기
algorithm/programmers

2021 카카오 채용연계형 인턴십 > 숫자 문자열과 영단어

by 권성호 2021. 9. 28.

1. 문제 링크

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

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

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

using namespace std;

void init(map<string, int>& myMap) {
	myMap.clear();
	myMap.insert({ "zero", 0 });
	myMap.insert({ "one", 1 });
	myMap.insert({ "two", 2 });
	myMap.insert({ "three", 3 });
	myMap.insert({ "four", 4 });
	myMap.insert({ "five", 5 });
	myMap.insert({ "six", 6 });
	myMap.insert({ "seven", 7 });
	myMap.insert({ "eight", 8 });
	myMap.insert({ "nine", 9 });
}

int solution(string s) {
	int answer = 0;
	map<string, int> myMap;
	init(myMap);

	string tmp = "";
	for (int i = 0; i < s.length(); i++) {
		if (s[i] >= '0'&& s[i] <= '9') {
			answer = answer * 10 + (s[i] - '0');
		}
		else {
			tmp.push_back(s[i]);
			if (myMap.find(tmp) == myMap.end())
				continue;	//tmp가 myMap에 없으면 다음으로 넘어가
			answer = answer * 10 + myMap[tmp];
			tmp.clear();
		}
	}
	return answer;
}

 

쉽다.

댓글