CS/기타 공부 기록들
프로그래머스 문제풀이(210921)
대두코기
2021. 9. 21. 04:55
반응형
https://programmers.co.kr/learn/courses/30/lessons/67256
class Solution {
public String solution(int[] numbers, String hand) {
String answer = "";
int disL = -1;
int disR = -1;
for(int i = 0; i < numbers.length; i++){
int to = numbers[i];
//to: 1, 4, 7
//System.out.println(to+"disL: "+disL+"disR: "+disR);
if(to == 1 || to == 4 || to == 7){
answer = answer + "L";
disL = to;
}else if(to == 3 || to == 6 || to == 9){
answer = answer + "R";
disR = to;
}else{
//만약 disL, disR을 비교하라. 비교 후 작은 쪽을 첨가하고 to를 집어넣어라
//만약 같다면 손을 비교하라
//만약 왼손 거리가 짧다면
if(fromTo(disL, to) < fromTo(disR, to)){
answer = answer + "L";
disL = to;
}
//만약 오른손 거리가 짧다면
else if(fromTo(disL, to) > fromTo(disR, to)){
answer = answer + "R";
disR = to;
}
//같다면
else{
if(hand.equals("left")){
answer = answer + "L";
disL = to;
}else{
answer = answer + "R";
disR = to;
}
}
}
}
//System.out.println(answer);
return answer;
}
///from: -1~9
///to: 2, 5, 8, 0
int fromTo(int from, int to){
//to: 2, 5, 8, 0
switch(from){
case -1:
switch(to){
case 2:
return 4;
case 5:
return 3;
case 8:
return 2;
case 0:
return 1;
}
break;
//left
case 1:
switch(to){
case 2:
return 1;
case 5:
return 2;
case 8:
return 3;
case 0:
return 4;
}
break;
case 4:
switch(to){
case 2:
return 2;
case 5:
return 1;
case 8:
return 2;
case 0:
return 3;
}
break;
case 7:
switch(to){
case 2:
return 3;
case 5:
return 2;
case 8:
return 1;
case 0:
return 2;
}
break;
//right
case 3:
switch(to){
case 2:
return 1;
case 5:
return 2;
case 8:
return 3;
case 0:
return 4;
}
break;
case 6:
switch(to){
case 2:
return 2;
case 5:
return 1;
case 8:
return 2;
case 0:
return 3;
}
break;
case 9:
switch(to){
case 2:
return 3;
case 5:
return 2;
case 8:
return 1;
case 0:
return 2;
}
break;
//middle
case 2:
switch(to){
case 2:
return 0;
case 5:
return 1;
case 8:
return 2;
case 0:
return 3;
}
break;
case 5:
switch(to){
case 2:
return 1;
case 5:
return 0;
case 8:
return 1;
case 0:
return 2;
}
break;
case 8:
switch(to){
case 2:
return 2;
case 5:
return 1;
case 8:
return 0;
case 0:
return 1;
}
break;
case 0:
switch(to){
case 2:
return 3;
case 5:
return 2;
case 8:
return 1;
case 0:
return 0;
}
break;
}
return -1;
}
}
반응형