https://programmers.co.kr/learn/courses/30/lessons/67256
풀이
왼손과 오른손의 위치를 저장해놓고 눌러야할 숫자까지의 거리를 구해서 비교한다.
눌러야할 숫자까지의 거리를 구하는 공식을 계산해내는데 오래걸렸다.
- 위아래 거리 = (눌러야할 숫자(n) - 현재 손의 위치) / 3
- 좌우 거리 = (눌러야할 숫자(n) - 현재 손의 위치) % 3
class Solution {
public String answer = "";
public int left = 10, right = 12; // 엄지위치
public String solution(int[] numbers, String hand) {
for(int n : numbers){
if(n == 1 || n == 4 || n == 7) selectLeft(n);
else if(n == 3 || n == 6 || n == 9) selectRight(n);
else {
if(n==0) n=11;
int l_dis = Math.abs(n-left)/3 + Math.abs(n-left)%3; // 상하+좌우 거리구함
int r_dis = Math.abs(n-right)/3 + Math.abs(n-right)%3;
if(l_dis<r_dis) selectLeft(n);
else if(l_dis>r_dis) selectRight(n);
else {
if(hand.equals("left")) selectLeft(n);
else selectRight(n);
}
}
}
return answer;
}
public void selectLeft(int n){
answer+='L';
left=n;
}
public void selectRight(int n){
answer+='R';
right=n;
}
}
'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 : 비밀지도 (0) | 2022.02.14 |
---|---|
[Java] 프로그래머스 : 완주하지 못한 선수 (feat. HashMap) (0) | 2022.02.14 |
[Java] 프로그래머스 : 크레인 인형뽑기 게임 (0) | 2022.02.14 |
[Java] 프로그래머스 : 체육복 (0) | 2022.02.14 |
[Java] 프로그래머스 : 모의고사 (0) | 2022.02.11 |