https://school.programmers.co.kr/learn/courses/30/lessons/67256

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


어우...

자판의 위치를 2차원 배열로 생성하여 키보드의 거리를 구하였다.

class Solution {
    static int L=0,R=1;
static int[][] aa = {{3,1},{0,0},{0,1},{0,2},{1,0},{1,1},{1,2},{2,0},{2,1},{2,2},{3,0},{3,2}};
    public String solution(int[] numbers, String hand) {
   String answer = "";
		int nl=10,nr=11;
		int h=-1;
		if(hand.equals("left"))h=L;
		else h=R;
		//System.out.println("H:"+h);
		
		for(int i=0;i<numbers.length;i++) {
			int ll = qqq(nl, numbers[i]);
			int rr = qqq(nr, numbers[i]);
			if(aa[numbers[i]][1]==0) {
				answer+="L"; nl=numbers[i];
			}
			else if(aa[numbers[i]][1]==2) {
				answer+="R"; nr=numbers[i];
			}
			else {
				if(ll<rr) {
					answer+="L"; nl=numbers[i];
				}
				else if(rr<ll) {
					answer+="R"; nr=numbers[i];
				}
				else {
					if(h==L) {
						answer+="L"; nl=numbers[i];
					}
					else {
						answer+="R"; nr=numbers[i];
					}
				}
			}
		}
		
        return answer;
	}
	static int qqq(int a,int b) {
		return (Math.abs(aa[a][0]-aa[b][0])+Math.abs(aa[a][1]-aa[b][1]));
	}
}

+ Recent posts