Java/Programmers
[Lv.1]키패드 누르기
GLOWWW
2023. 1. 30. 18:10
package Lv_1;
public class 키패드누르기 {
public static int comp_dist(int position, int num) {
return (Math.abs(num-position) / 3) + (Math.abs(num-position) % 3);
}
public static String solution(int[] numbers, String hand) {
StringBuilder answer = new StringBuilder();
int L_position = 10;
int R_position = 12;
for (int num : numbers) {
if (num == 1 || num == 4 || num == 7) {
answer.append("L");
L_position = num;
} else if (num == 3 || num == 6 || num == 9) {
answer.append("R");
R_position = num;
} else {
if (num == 0) {
num = 11;
}
if (comp_dist(L_position, num) < comp_dist(R_position, num)) {
answer.append("L");
L_position = num;
} else if (comp_dist(L_position, num) > comp_dist(R_position, num)) {
answer.append("R");
R_position = num;
} else {
if (hand.equals("right")) {
answer.append("R");
R_position = num;
} else {
answer.append("L");
L_position = num;
}
}
}
}
return answer.toString();
}
public static void main(String[] args) {
int[] numbers = new int[]{1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5};
String hand = "right";
String result = solution(numbers, hand);
System.out.println(result);
}
}
아쉽지만 comp_dist함수를 직접 고안하지 못했다... 여러 방법은 떠올랐지만 무엇이 가장 적합한 방법인지 아직 고르는 능력이 부족하다.