programmers.co.kr/learn/courses/30/lessons/67256
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
string solution(vector<int> numbers, string hand) {
string answer = "";
bool isRight = hand == "right";
pair<int, int> key[12];
key[0] = make_pair(3, 1);
key[1] = make_pair(0, 0);
key[2] = make_pair(0, 1);
key[3] = make_pair(0, 2);
key[4] = make_pair(1, 0);
key[5] = make_pair(1, 1);
key[6] = make_pair(1, 2);
key[7] = make_pair(2, 0);
key[8] = make_pair(2, 1);
key[9] = make_pair(2, 2);
key[10] = make_pair(3, 0); // *
key[11] = make_pair(3, 2); // #
int right = 10;
int left = 11;
for (int n : numbers) {
switch (n) {
case 1: case 4: case 7:
answer += "L";
left = n;
break;
case 3: case 6: case 9:
answer += "R";
right = n;
break;
default:
int distR = abs(key[n].first - key[right].first) + abs(key[n].second - key[right].second);
int distL = abs(key[n].first - key[left].first) + abs(key[n].second - key[left].second);
if (distR < distL) {
answer += "R";
right = n;
}
else if (distL < distR) {
answer += "L";
left = n;
}
else if (isRight) {
answer += "R";
right = n;
}
else {
answer += "L";
left = n;
}
}
}
return answer;
}
분명 인턴십 지원할 때 풀었던 문젠데...
그때보다 푸는 시간이 더 걸린다ㅜㅜ 코테를 너무 놓고 살았어
왼손, 오른손의 현재 위치를 저장하는 변수로 left, right를 사용했고
키패드 사이의 거리를 계산해야 하므로 키패드의 좌표를 저장하는 변수 key를 사용했다.
끝
'Algorithm > 프로그래머스' 카테고리의 다른 글
[2020 카카오 인턴십] 경주로 건설 (0) | 2020.09.07 |
---|---|
[2020 카카오 인턴십] 보석 쇼핑 (0) | 2020.09.03 |
[프로그래머스] 기지국 설치 (0) | 2020.05.22 |
[프로그래머스] 방문 길이 (0) | 2020.05.21 |
[프로그래머스] 배달 - Java (0) | 2020.05.21 |