728x90
๊ฐ๋ก๋ก ์ธ์ ํ ํคํจ๋๋ 1๋งํผ ์ฐจ์ด๊ฐ ๋๊ณ ์ธ๋ก๋ก ์ธ์ ํ ํคํจ๋๋ 3๋งํผ ์ฐจ์ด๊ฐ ๋๋ ์ด ๊ฒฝ์ฐ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํด์ผ ํ ์ง ๋ชฐ๋ผ์ ๊ณ ๋ฏผ์ ๋๋ฌด ๋ง์ด ํ๋ค. ์ฌ์ค ๊ตฌ๊ธ์์ ์ด๋ค ์ฌ๋๋ ๊ณ ๋ฏผํด์ ํด๊ฒฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ์ถฉ๊ฒฉ์ ๋น ์ง.... 3์ผ๋ก ๋๋ ๋ชซ๊ณผ 3์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ํ๋ฉด ๊ทธ ์ฐจ์ด๊ฐ ์์ด์ง๋ค๋ ๊ฒ์ด ์๋กญ๊ฒ ๋ฐ๋ผ๋ณผ ์ ์๋ ์์ผ๋ฅผ ๋ํ๋ค.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string solution(vector<int> numbers, string hand) {
string answer = "";
int left_count = 10;
int right_count = 12;
for(int i = 0 ; i < numbers.size() ; i++) {
if(numbers[i] == 1 || numbers[i] == 4 || numbers[i] == 7) {
// 1,4,7 ์ ํด๋นํ๋ ๋ฒํธ๋ L๋ฅผ push_back ํ๋ค.
answer.push_back('L');
// left_count์๋ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋ ์ซ์๋ฅผ ์ ์ฅํ๋ค.
left_count = numbers[i];
}
else if(numbers[i] == 3 || numbers[i] == 6 || numbers[i] == 9) {
// 3,6,9 ์ ํด๋นํ๋ ๋ฒํธ๋ R๋ฅผ push_back ํ๋ค.
answer.push_back('R');
// right_count์๋ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉํ ์ซ์๋ฅผ ์ ์ฅํ๋ค.
right_count = numbers[i];
}
else {
// ์ซ์ 0์ ๋๋ฅธ ๊ฒฝ์ฐ 11๋ก ๋์ผํ ๋
ผ๋ฆฌ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด 11๋ก ๋ฐ๊พผ๋ค.
if(numbers[i] == 0) {
numbers[i] = 11;
}
// left_dist1์ ์ง๊ธ ๋๋ฅธ ๋ฒํธ์ ๊ฐ์ฅ ์ต๊ทผ์ ์ผ์์ด ๋๋ฅธ ๋ฒํธ์ ์ฐจ์ ์ ๋๊ฐ
// right_dist1์ ์ง๊ธ ๋๋ฅธ ๋ฒํธ์ ๊ฐ์ฅ ์ต๊ทผ์ ์ค๋ฅธ์์ด ๋๋ฅธ ๋ฒํธ์ ์ฐจ์ ์ ๋๊ฐ
int left_dist1 = abs(numbers[i] - left_count);
int right_dist1 = abs(numbers[i] - right_count);
// ๊ฐ๋ก๋ก ์ธ์ ํ ๊ฒฝ์ฐ๋ ์ฐจ์ด๊ฐ 1์ด๊ณ ์ธ๋ก๋ก ์ธ์ ํ๋ฉด ์ฐจ์ด๊ฐ 3์ด๋ฏ๋ก
// 3์ผ๋ก ๋๋ ๋ชซ๊ณผ 3์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ํ๋ฉด ๊ทธ ์ฐจ์ด๊ฐ ํด๊ฒฐ๋๋ค.(***)
int left_dist = (left_dist1 / 3) + (left_dist1 % 3);
int right_dist = (right_dist1 / 3) + (right_dist1 % 3);
// ๋ง์ฝ ์ผ์๊ณผ ์ค๋ฅธ์์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๋ค๋ฉด
if(left_dist == right_dist) {
// ์ค๋ฅธ์์ธ ๊ฒฝ์ฐ
if(hand == "right") {
// R์ push_backํ๊ณ
answer.push_back('R');
// right_count์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉํ ๋ฒํธ๋ฅผ ์ต์ ํํ๋ค.
right_count = numbers[i];
// ์ผ์์ธ ๊ฒฝ์ฐ
} else if(hand == "left") {
// L์ push_backํ๊ณ
answer.push_back('L');
// left_count์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉํ ๋ฒํธ๋ฅผ ์ต์ ํํ๋ค.
left_count = numbers[i];
}
}
// ์ผ์์ด ๋ ๊ฐ๊น์ด ๊ฒฝ์ฐ
else if(left_dist < right_dist) {
// L์ push_back ํ๊ณ
answer.push_back('L');
// left_count์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉํ ๋ฒํธ๋ฅผ ์ต์ ํํ๋ค.
left_count = numbers[i];
}
// ์ค๋ฅธ์์ด ๋ ๊ฐ๊น์ด ๊ฒฝ์ฐ
else if(left_dist > right_dist) {
// R์ push_back ํ๊ณ
answer.push_back('R');
// right_count์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉํ ๋ฒํธ๋ฅผ ์ต์ ํํ๋ค.
right_count = numbers[i];
}
}
}
cout << answer << endl;
return answer;
}