ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • 프로그래머스 Lv.2
  • 깃허브
  • Queue
  • 프로그래머스
  • getOrDefault
  • Android
  • 백준
  • 안드로이드
  • entrySet
  • 코틀린
  • HashMap
  • 깃
  • stack
  • sort
  • PriorityQueue
  • greedy
  • git
  • Comparator
  • React
  • Arrays.sort()
  • DP
  • 해시
  • java
  • kotiln
  • BFS
  • reactjs
  • compareTo()
  • git bash
  • dfs
  • 스택/큐

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

[Java] 프로그래머스 : 키패드 누르기
Algorithm & Data Structure/프로그래머스

[Java] 프로그래머스 : 키패드 누르기

2022. 2. 14. 13:34

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

 

코딩테스트 연습 - 키패드 누르기

[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"

programmers.co.kr

 

풀이

왼손과 오른손의 위치를 저장해놓고 눌러야할 숫자까지의 거리를 구해서 비교한다.

눌러야할 숫자까지의 거리를 구하는 공식을 계산해내는데 오래걸렸다.

  • 위아래 거리 = (눌러야할 숫자(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
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 : 비밀지도
    • [Java] 프로그래머스 : 완주하지 못한 선수 (feat. HashMap)
    • [Java] 프로그래머스 : 크레인 인형뽑기 게임
    • [Java] 프로그래머스 : 체육복
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바