프로그래머스 67256 키패드 누르기 JAVA

sundays·2022년 10월 2일
0

문제

키패드 누르기

풀이

  1. 초기 손 위치를 설정해야 한다
		int left = 10;
        int right = 12;

이부분을 설정하지 않으면 테케 8번 15번이 틀린다
10번은 * 12번은 # 를 의미 한다.

  1. 양쪽손과 목표 숫자의 거리를 구하는 방법을 설정한다
	/**
     * target 과 현재 손의 거리 구하기
     * @param current 손 위치
     * @param target 목표 숫자
     * @return
     */
    public static int getLength(int current, int target) {
        current = (current == 0) ? 11 : current;
        target = (target == 0) ? 11 : target;

        int x = (current - 1) / 3;
        int y = (current - 1) % 3;
        int targetX = target / 3;
        int targetY = 1;

        return Math.abs(x - targetX) + Math.abs(y - targetY);
    }

번호가 0번인 경우는 11번으로 설정한후 상대 위치 (x,y)로 변환 하는 방법을 구한다.
x축은 3으로 나눈 몫에 해당하는 위치, y축은 3으로 나눈 나머지 에 해당한다 y축에 해당하는 targetY는 1로 동일하다 왜냐하면 이부분은 2,5,8,0만 들어올 것이기 때문에 고정으로 들어올 것이라 연산을 따로 할 필요가 없다

해당 아이디어는 이 블로그를 참고하였다

전체 코드

전체 코드

profile
develop life

0개의 댓글