이것도 프로그래머스 레벨 1 문제이다.
이것도 그냥 구현하라는대로 번호판에 맞춰 left, right 손의 위치를
pair로 저장해줬다!
string answer = "";
pair<int,int> left = make_pair(4,1), right = make_pair(4,3);
vector<vector<int>> key = { {0,0,0,0},
{0,1,2,3},
{0,4,5,6},
{0,7,8,9},
{0,-1,0,-2} };
int hand_ = 0;
if (hand == "left") {
hand_ = 1;
}
for (int i = 0; i < numbers.size(); i++) {
if (numbers[i] == 1) {
answer += "L";
left = make_pair(1, 1);
}
else if (numbers[i] == 4) {
answer += "L";
left = make_pair(2, 1);
}
else if (numbers[i] == 7) {
answer += "L";
left = make_pair(3, 1);
}
else if (numbers[i] == 3) {
answer += "R";
right = make_pair(1, 3);
}
else if (numbers[i] == 6) {
answer += "R";
right = make_pair(2, 3);
}
else if (numbers[i] == 9) {
answer += "R";
right = make_pair(3, 3);
}
else if (numbers[i] == 2) {
int l = abs(left.first - 1) + abs(left.second - 2);
int r = abs(right.first - 1) + abs(right.second - 2);
if (l < r) {
answer += "L";
left = make_pair(1, 2);
}
else if (l > r) {
answer += "R";
right = make_pair(1, 2);
}
else {
if (hand_ == 1) {
answer += "L";
left = make_pair(1, 2);
}
else {
answer += "R";
right = make_pair(1, 2);
}
}
}
else if (numbers[i] == 5) {
int l = abs(left.first - 2) + abs(left.second - 2);
int r = abs(right.first - 2) + abs(right.second - 2);
if (l < r) {
answer += "L";
left = make_pair(2, 2);
}
else if (l > r) {
answer += "R";
right = make_pair(2, 2);
}
else {
if (hand_ == 1) {
answer += "L";
left = make_pair(2, 2);
}
else {
answer += "R";
right = make_pair(2, 2);
}
}
}
else if (numbers[i] == 8) {
int l = abs(left.first - 3) + abs(left.second - 2);
int r = abs(right.first - 3) + abs(right.second - 2);
if (l < r) {
answer += "L";
left = make_pair(3, 2);
}
else if (l > r) {
answer += "R";
right = make_pair(3, 2);
}
else {
if (hand_ == 1) {
answer += "L";
left = make_pair(3, 2);
}
else {
answer += "R";
right = make_pair(3, 2);
}
}
}
else if (numbers[i] == 0) {
int l = abs(left.first - 4) + abs(left.second - 2);
int r = abs(right.first - 4) + abs(right.second - 2);
if (l < r) {
answer += "L";
left = make_pair(4, 2);
}
else if (l > r) {
answer += "R";
right = make_pair(4, 2);
}
else {
if (hand_ == 1) {
answer += "L";
left = make_pair(4, 2);
}
else {
answer += "R";
right = make_pair(4, 2);
}
}
}
}

'코딩테스트' 카테고리의 다른 글
| 프로그래머스 괄호 회전하기 (0) | 2021.04.21 |
|---|---|
| 프로그래머스 카카오 프렌즈 컬러링북 (0) | 2021.04.21 |
| 프로그래머스 신규 아이디 추천 (1) | 2021.04.20 |
| 프로그래머스 크레인 인형 뽑기 (0) | 2021.04.20 |
| 백준 10773 제로 (1) | 2021.04.19 |
댓글