map을 이용한 풀이
일일히 조건문 짜는 것보다 미리 python의 딕셔너리 같은걸 만드는게 어떨까 생각했다. c++에는 이에 해당하는 map이 존재한다. STL을 지원하고, size(), empty(), find(k), operator[]과 같은 여러 기능들을 제공한다. map<char,int> cmd;
로 declare한 뒤에 cmd['w']=1
처럼 define해도 좋고, 처음부터 {% raw %}{{'w',1},{'s',-1},{'d',10},{'a',-10}}
{% endraw %}이렇게 define해도 된다.
#include <string>
#include <vector>
#include <map>
using namespace std;
map<char,int> cmd;
cmd['w'] = 1;
cmd['s'] = -1;
cmd['d'] = 10;
cmd['a'] = -10;
int solution(int n, string control) {
int ans = n;
for (char ct: control){
ans += cmd[ct];
}
return ans;
}
switch을 이용한 풀이
가독성을 위한다면 switch을 사용해도 좋다. 각 case별로 기능을 지정해주면 case가 일치할 때에 각각 실행된다.
#include <string>
#include <vector>
using namespace std;
int solution(int n, string control) {
for (int i = 0; i < control.length(); i++) {
switch (control[i]) {
case 'w': n++; break;
case 's': n--; break;
case 'd': n += 10; break;
case 'a': n -= 10; break;
}
}
return n;
}