코딩 정복 가즈아~
Home
  • 분류 전체보기 (159)
    • 알고리즘 풀이 (149)
      • 프로그래머스 (89)
      • 백준 (59)
    • 취준 일기 (6)
    • 네트워크 정리 (1)
Home
  • 분류 전체보기 (159)
    • 알고리즘 풀이 (149)
      • 프로그래머스 (89)
      • 백준 (59)
    • 취준 일기 (6)
    • 네트워크 정리 (1)
블로그 내 검색

코딩 정복 가즈아~

(っ◔◡◔)っ ♥ 2021 취뽀하자!! ♥

  • 알고리즘 풀이/프로그래머스

    [level1] 프로그래머스 - 키패드 누르기(JAVA)

    2021. 8. 25.

    by. 데롱디롱

    728x90
    solution함수 안에 부분 보시면 됩니다!

     

     

    - 각 키패드의 행렬 좌표를 저장하는 배열을 만들고,
      2,5,8,0의 입력이 들어온 경우, 왼손과 오른손에서의 거리(ld, rd)를 재어보고 더 적은 것을 선택

     

     

    package com.pro.level1;
    
    public class 키패드누르기 {
    
    	public static void main(String[] args) {
    		int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
    		String hand = "right";
    		System.out.println(solution(numbers, hand));
    	}
    
    	public static String solution(int[] numbers, String hand) {
    
    		// 0~9, *, # 키패드의 좌표를 저장
    		int[][] keypad = { { 3, 1 }, { 0, 0 }, { 0, 1 }, { 0, 2 }, { 1, 0 }, { 1, 1 }, { 1, 2 }, { 2, 0 }, { 2, 1 },
    				{ 2, 2 }, { 3, 0 }, { 3, 2 } };
    		int leftHand = 10; // *
    		int rightHand = 11; // #
    
    		StringBuilder sb = new StringBuilder();
    		for (int i = 0; i < numbers.length; i++) {
    			int n = numbers[i];
    
    			if (n == 1 || n == 4 || n == 7) { // 왼손 무조건
    				leftHand = n;
    				sb.append('L');
    			} else if (n == 3 || n == 6 || n == 9) { // 오른손 무조건
    				rightHand = n;
    				sb.append("R");
    			} else {	// 두 손의 거리 비교
    				int ld = Math.abs(keypad[leftHand][0] - keypad[n][0]) + Math.abs(keypad[leftHand][1] - keypad[n][1]);
    				int rd = Math.abs(keypad[rightHand][0] - keypad[n][0]) + Math.abs(keypad[rightHand][1] - keypad[n][1]);
    				char dir = ld == rd ? hand.compareTo("right") == 0 ? 'r' : 'l' : ld < rd ? 'l' : 'r';
    
    				if (dir == 'l') {
    					leftHand = n;
    					sb.append('L');
    				} else {
    					rightHand = n;
    					sb.append("R");
    				}
    			}
    		}
    
    		return sb.toString();
    	}
    
    }
    저작자표시 (새창열림)

    '알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

    [level1] 프로그래머스 - 내적(JAVA)  (0) 2021.08.25
    [level1] 프로그래머스 - 소수만들기(JAVA)  (0) 2021.08.25
    [level1] 프로그래머스 - 로또의 최고순위와 최저순위(JAVA)  (0) 2021.08.25
    [level1] 프로그래머스 - 숫자 문자열과 영단어(JAVA)  (0) 2021.08.25
    [level1] 프로그래머스 - 신규 아이디 추천(JAVA)  (0) 2021.08.25

    댓글

    관련글

    • [level1] 프로그래머스 - 소수만들기(JAVA) 2021.08.25
    • [level1] 프로그래머스 - 로또의 최고순위와 최저순위(JAVA) 2021.08.25
    • [level1] 프로그래머스 - 숫자 문자열과 영단어(JAVA) 2021.08.25
    • [level1] 프로그래머스 - 신규 아이디 추천(JAVA) 2021.08.25
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

피할 수 없다면, 순간을 즐겨라

Designed by Nana
블로그 이미지
데롱디롱
희희.. (๑′ᴗ‵๑)

티스토리툴바