#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string solution(vector<int> numbers, string hand) {
string answer = "";
// 3의 배수로 계산하기 위해 이렇게 설정했다.
int left = 10, right = 12;
for (int i = 0; i < numbers.size(); i++) {
if (numbers[i] == 0) {
numbers[i] = 11;
}
if (numbers[i] % 3 == 1) {
left = numbers[i];
answer += "L";
} else if (numbers[i] % 3 == 0) {
right = numbers[i];
answer += "R";
} else {
int left_dist = abs(left - numbers[i]);
int right_dist = abs(right - numbers[i]);
int left_count = 0, right_count = 0;
// 움직임을 count할 수 있다.
left_count = left_dist / 3 + left_dist % 3;
right_count = right_dist / 3 + right_dist % 3;
if (left_count < right_count) {
left = numbers[i];
answer += "L";
} else if (left_count > right_count) {
right = numbers[i];
answer += "R";
} else {
if (hand == "left") {
left = numbers[i];
answer += "L";
} else {
right = numbers[i];
answer += "R";
}
}
}
}
return answer;
}
int main() {
vector<int> numbers = {1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5};
string hand = "right";
cout << solution(numbers, hand);
return 0;
}
처음에 정답에 근접했다가, 조건을 잘못 줘서 한참 돌아갔다. 다른 많은 것들을 시도했다가 다시 처음의 풀이를 적용했더니 쉽게 풀렸다. 삽질은 좋은 경험이다..