문제
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
- "w" : n이 1 커집니다.
- "s" : n이 1 작아집니다.
- "d" : n이 10 커집니다.
- "a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
입출력 예시
풀이 #1
입력 받은 문자에 따른 처리 방법을 메뉴얼(manual)로 작성한 풀이
#include <string>
#include <unordered_map>
using namespace std;
int solution(int n, string control) {
int answer = n;
unordered_map<char, int> manual = {{'w', 1}, {'s', -1}, {'d', 10}, {'a', -10}};
for (const auto& c : control) {
answer += manual[c];
}
return answer;
}
풀이 #2
의식의 흐름대로 switch-case문을 사용한 풀이
#include <string>
using namespace std;
int solution(int n, string control) {
int answer = n;
for (const auto& s : control) {
switch (s) {
case 'w': {
++answer;
break;
}
case 's': {
--answer;
break;
}
case 'd': {
answer += 10;
break;
}
case 'a': {
answer -= 10;
break;
}
}
}
return answer;
}
'🐸 Problem Solving > Programmers' 카테고리의 다른 글
[Programmers/C++] 수 조작하기 2 (0) | 2024.07.24 |
---|---|
[Programmers/C++] 수박수박수박수박수박수? (0) | 2024.07.24 |
[Programmers/C++] 주사위 게임 3 (0) | 2024.07.23 |