https://programmers.co.kr/learn/courses/30/lessons/67256
class Solution {
public String solution(int[] numbers, String hand) {
int k=1;
int la=3, lb=0, ra=3, rb=2;
int a, b;
StringBuffer sb = new StringBuffer();
int[][] dial = new int[4][3];
for(int i=0;i<4;i++) {
for(int j=0; j<dial[i].length; j++) {
dial[i][j]=k;
k++;
}
}
dial[3][0]=77;
dial[3][1]=0;
dial[3][2]=99;
for (int number : numbers) {
if (number == 1 || number == 4 || number == 7 ) {
for(int i=0; i<4; i++) {
for(int j=0; j<3; j++) {
if(dial[i][j]== number) {
la=i; lb=j;
sb.append("L");
}
}
}
}
else if(number == 3 || number == 6 || number == 9) {
for(int i=0; i<4; i++) {
for(int j=0; j<3; j++) {
if(dial[i][j]== number) {
ra=i; rb=j;
sb.append("R");
}
}
}
}
else {
for(int i=0; i<4; i++) {
for(int j=0; j<3; j++) {
if(dial[i][j]== number) {
a=i; b=j;
int BetweenL = Math.abs(a-la)+Math.abs(b-lb);
int BetweenR = Math.abs(a-ra)+Math.abs(b-rb);
if (BetweenL < BetweenR) {
la=i; lb=j;
sb.append("L");
}
else if(BetweenL > BetweenR) {
ra=i; rb=j;
sb.append("R");
}
else {
if(hand.equals("right")) {
ra=i; rb=j;
sb.append("R");
}
else {
la=i; lb=j;
sb.append("L");
}
}
}
}
}
}
}
String answer = sb.toString();
return answer;
}
}
'코딩테스트연습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - JAVA] 월간 코드 챌린지 시즌1 내적 (0) | 2021.10.24 |
---|---|
[프로그래머스 - JAVA] 월간 코드 챌린지 시즌2 음양 더하기 (0) | 2021.10.24 |
[프로그래머스 - JAVA] 월간 코드 챌린지 시즌3 없는 숫자 더하기 (0) | 2021.10.24 |
[프로그래머스 - JAVA] 2021 카카오 채용연계형 인턴십숫자 문자열과 영단어 (0) | 2021.10.24 |
[프로그래머스 - JAVA] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위 (0) | 2021.10.24 |