레벨 1
https://programmers.co.kr/learn/courses/30/lessons/67256
현재 왼손과 오른손의 위치를 키패드를 누를 때 마다 기억하고 있어야하는 부분을 구현하기 까다로운 문제였다.
키패드 위아래로 3차이, 양옆으로 1차이인 것을 이용해서 아래와 같이 거리를 구하는 식을 이용해서 풀었다.
int leftdist = Math.abs(tmp - left) / 3 + Math.abs(tmp - left) % 3;
int rightdist = Math.abs(tmp - right) / 3 + Math.abs(tmp - right) % 3;
tmp = 입력받은 값
left, right = 직전에 왼손과 오른손의 위치
leftdist, rightdist = 왼손과 입력받은 값의 거리, 오른손과 입력받은 값의 거리
*,0,#은 10,11,12로 정해두고 문제를 풀었다.
import java.util.*;
class Solution {
public String solution(int[] numbers, String hand) {
String answer = "";
int left =10;
int right =12;
for(int tmp: numbers){
if(tmp==1||tmp==4||tmp==7){
answer+="L";
left = tmp;
}else if(tmp==3||tmp==6||tmp==9){
answer+="R";
right = tmp;
}else {
if(tmp==0) tmp=11;
int leftdist = Math.abs(tmp-left)/3+Math.abs(tmp-left)%3;
int rightdist = Math.abs(tmp-right)/3+Math.abs(tmp-right)%3;
if(leftdist<rightdist){
answer+="L";
left = tmp;
}else if(leftdist>rightdist){
answer+="R";
right = tmp;
}else{
if(hand.equals("left")){
answer+="L";
left = tmp;
}else{
answer+="R";
right = tmp;
}
}
}
}
return answer;
}
}