PROGRAMMERS/KAKAO

PROGRAMMERES Level 1 2020 카카오 인턴십 키패드 누르기 JAVA

c0mmedes 2022. 7. 21. 17:41
import java.util.*;

class Solution {
    public String solution(int[] numbers, String hand) {
        String answer = "";

        //손가락의 위치 저장(*, # = 10, 12)
        int flag_L = 10; 
        int flag_R = 12;
        
        for(int num : numbers){
            // 왼쪽손가락번호
            if(num == 1 || num == 4 || num == 7){
                answer += "L";
                flag_L = num;
            } 
            // 오른쪽손가락번호
            else if(num == 3 || num == 6 || num == 9){
                answer += "R";
                flag_R = num;
            } 
            // 가운데
            else {             
                // 0은 11로 계산
                if(num==0) num = 11;
                
                int Rd = Math.abs(num - flag_R)/3 + Math.abs(num - flag_R)%3; // 오른손가락과의 거리
                int Ld = Math.abs(num - flag_L)/3 + Math.abs(num - flag_L)%3;  // 왼손가락과의 거리                
                
                // 왼손가락과의 거리가 더 클 경우
                if(Rd < Ld) {
                    answer += "R";
                    flag_R = num;
                // 오른손가락과의 거리가 더 클 경우
                } else if(Rd > Ld) {
                    answer += "L";
                    flag_L = num;
                // 양쪽과의 거리가 같을 경우
                } else {
                    if(hand.equals("right")) {
                        answer += "R";
                        flag_R = num;
                    } else {
                        answer += "L";
                        flag_L = num;
                    }
                } 
                }
            } 
        return answer;
        } 
}