From 444a65fb2e310cfd278a8c2d913cae7ef9e5aad9 Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Thu, 15 Dec 2022 09:48:27 +0900 Subject: [PATCH] =?UTF-8?q?uploaded=20at=202022.=2012.=2015.=20=EC=98=A4?= =?UTF-8?q?=EC=A0=84=209:48:26?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../[카카오 인턴] 키패드 누르기/solution.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 programmers/[카카오 인턴] 키패드 누르기/solution.java diff --git a/programmers/[카카오 인턴] 키패드 누르기/solution.java b/programmers/[카카오 인턴] 키패드 누르기/solution.java new file mode 100644 index 0000000..f706577 --- /dev/null +++ b/programmers/[카카오 인턴] 키패드 누르기/solution.java @@ -0,0 +1,70 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/67256 + +import java.util.*; +class Solution { + private int[] lp; + private int[] rp; + private static int[] checkin(int i, StringBuilder answer, int[] array, String aap, int[] pos){ + for (int j : array){ + if(i == j){ + answer.append(aap); + System.out.println(aap); + pos = position(i); + + } + } + return pos; + } + private static int[][] checkin(int i, StringBuilder answer, int[] array, String aap, int[] lp, int[] rp){ + for (int j : array){ + if(i == j){ + int[] goOn = position(i); + int lv = Math.abs(lp[0]-goOn[0])+Math.abs(lp[1]-goOn[1]); + int rv = Math.abs(rp[0]-goOn[0])+Math.abs(rp[1]-goOn[1]); + if(lv < rv || (lv == rv && aap.equals("left"))) { + aap = "L"; + lp = goOn; + } + else { + aap = "R"; + rp = goOn; + } + answer.append(aap); + System.out.println(aap); + + } + } + return new int[][] {lp, rp}; + } + private static int[] position(int i){ + int[] retu = new int[2]; + if(i > 0){ + int r = (i-1)/3; + int c = (i-1)%3; + retu[0] = r; + retu[1] = c; + } else { + retu[0] = 3; + retu[1] = 1; + } + return retu; + } + public String solution(int[] numbers, String hand) { + StringBuilder answer = new StringBuilder(); + int[] left = {1,4,7}; + int[] right = {3,6,9}; + int[] mid = {2,5,8,0}; + int[] lp = {3, 0}; + int[] rp = {3, 2}; + List leftList = Arrays.asList(left); + for (int i : numbers){ + lp = checkin(i, answer, left, "L", lp); + rp = checkin(i, answer, right, "R", rp); + int[][] result = checkin(i, answer, mid, hand, lp, rp); + lp = result[0]; + rp = result[1]; + System.out.println("Lp" + Arrays.toString(lp) +"Rp "+ Arrays.toString(rp)); + } + return answer.toString(); + } +} \ No newline at end of file