70 lines
2.2 KiB
Java
70 lines
2.2 KiB
Java
// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/67256
|
|
|
|
import java.util.*;
|
|
class Solution {
|
|
private int[] lp;
|
|
private int[] rp;
|
|
private static int[] checkin(int i, StringBuilder answer, int[] array, String aap, int[] pos){
|
|
for (int j : array){
|
|
if(i == j){
|
|
answer.append(aap);
|
|
System.out.println(aap);
|
|
pos = position(i);
|
|
|
|
}
|
|
}
|
|
return pos;
|
|
}
|
|
private static int[][] checkin(int i, StringBuilder answer, int[] array, String aap, int[] lp, int[] rp){
|
|
for (int j : array){
|
|
if(i == j){
|
|
int[] goOn = position(i);
|
|
int lv = Math.abs(lp[0]-goOn[0])+Math.abs(lp[1]-goOn[1]);
|
|
int rv = Math.abs(rp[0]-goOn[0])+Math.abs(rp[1]-goOn[1]);
|
|
if(lv < rv || (lv == rv && aap.equals("left"))) {
|
|
aap = "L";
|
|
lp = goOn;
|
|
}
|
|
else {
|
|
aap = "R";
|
|
rp = goOn;
|
|
}
|
|
answer.append(aap);
|
|
System.out.println(aap);
|
|
|
|
}
|
|
}
|
|
return new int[][] {lp, rp};
|
|
}
|
|
private static int[] position(int i){
|
|
int[] retu = new int[2];
|
|
if(i > 0){
|
|
int r = (i-1)/3;
|
|
int c = (i-1)%3;
|
|
retu[0] = r;
|
|
retu[1] = c;
|
|
} else {
|
|
retu[0] = 3;
|
|
retu[1] = 1;
|
|
}
|
|
return retu;
|
|
}
|
|
public String solution(int[] numbers, String hand) {
|
|
StringBuilder answer = new StringBuilder();
|
|
int[] left = {1,4,7};
|
|
int[] right = {3,6,9};
|
|
int[] mid = {2,5,8,0};
|
|
int[] lp = {3, 0};
|
|
int[] rp = {3, 2};
|
|
List leftList = Arrays.asList(left);
|
|
for (int i : numbers){
|
|
lp = checkin(i, answer, left, "L", lp);
|
|
rp = checkin(i, answer, right, "R", rp);
|
|
int[][] result = checkin(i, answer, mid, hand, lp, rp);
|
|
lp = result[0];
|
|
rp = result[1];
|
|
System.out.println("Lp" + Arrays.toString(lp) +"Rp "+ Arrays.toString(rp));
|
|
}
|
|
return answer.toString();
|
|
}
|
|
} |