キーボードを押す
/*
상하좌우만 가능
L *시작 1 4 7
R #시작 3 6 9
2 5 8 0 더 가까운손 / 거리가 같으면 hand에 따라
*/
class Solution {
public String solution(int[] numbers, String hand) {
String answer = "";
char [] arr = {'x',
'L','M','R',
'L','M','R',
'L','M','R',
'*','M','#'
};
int leftI = 3;
int leftJ = 0;
int rightI = 3;
int rightJ = 2;
for(int i=0;i<numbers.length;i++){
if(numbers[i]==0) numbers[i]=11;
int x = (numbers[i]-1)/3;
int y = (numbers[i]-1)%3;
//1 4 7 일때
if(arr[numbers[i]]=='L'){
answer+="L";
leftI = x;
leftJ = y;
}
//3 6 9 일때
else if(arr[numbers[i]]=='R'){
answer+="R";
rightI = x;
rightJ = y;
}
//가운데일때 2 5 8 0
else if(arr[numbers[i]]=='M'){
//왼손오른손의 이전 좌표값과 현재 좌표값(눌러야하는번호)의 차이 비교
if(Math.abs(leftI-x)+Math.abs(leftJ-y) < Math.abs(rightI-x)+Math.abs(rightJ-y)) {
answer+="L";
leftI = x;
leftJ = y;
}
else if(Math.abs(leftI-x)+Math.abs(leftJ-y) > Math.abs(rightI-x)+Math.abs(rightJ-y)) {
answer+="R";
rightI = x;
rightJ = y;
}
//거리 같을 경우
else {
//왼손잡이
if(hand.equals("left")) {
answer+="L";
leftI = x;
leftJ = y;
}
//오른손잡이
else {
answer +="R";
rightI = x;
rightJ = y;
}
}
}
}
return answer;
}
}
Reference
この問題について(キーボードを押す), 我々は、より多くの情報をここで見つけました https://velog.io/@ppnrn/키패드-누르기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol