반응형
<문제 소개>
<소스 코드>
#include <string>
#include <vector>
using namespace std;
string solution(vector<int> numLog)
{
string answer = "";
for(int i = 1; i < numLog.size(); i++)
{
int curDiff = numLog[i] - numLog[i - 1];
if(curDiff == 1)
{
answer += "w";
}
else if(curDiff == -1)
{
answer += "s";
}
else if(curDiff == 10)
{
answer += "d";
}
else if(curDiff == -10)
{
answer += "a";
}
}
return answer;
}
<풀이과정>
1. numLog의 원소들의 각 차이를 이용하여 어떤 조작이 있었는지 알 수 있으므로 for문을 돌면서 각 원소들의 차이를 구하여 조작을 판단한다.
2. 0번 인덱스는 이전 인덱스가 없으므로 넘어가고 1번 인덱스부터 반복을 시작한다.
3. 현재의 차이값을 curDiff라고 선언하고, 각 반복에서의 차이값 numLog[i] - numLog[i-1]을 넣어준다.
4. curDiff가 1이라면 차이가 1인 것이므로 현재 값에서 'w' 버튼을 눌러 1을 더한 것이다.
5. 마찬가지 방식으로 -1일때는 's', 10일때는 'd', -10일때는 'a' 버튼을 눌렀음을 알 수있으므로 if문을 이용해 조건을 나누어 answer에 각 조건에 맞게 조작값을 넣어준다.
6. for문이 모두 끝난 뒤 answer을 리턴한다.
<코멘트>
어렵지 않게 풀 수 있었다.
<제출결과>