반응형

개발 공부를 꾸준히 해야하는데... 계속 달렸다가 멈췄다가 무한반복 굴레에 빠졌다!!

얼른 악순환을 끊고 다시 공부해야지!

 

<2020 카카오 인턴십 코딩테스트 문제 - 키패드 누르기>

 

class Solution {
    //        0부터 9까지 좌표 {y,x}
    int[][] numpadPos = {
            {3,1}, //0
            {0,0}, //1
            {0,1}, //2
            {0,2}, //3
            {1,0}, //4
            {1,1}, //5
            {1,2}, //6
            {2,0}, //7
            {2,1}, //8
            {2,2}  //9
    };
    //초기 위치
    int[] leftPos = {3,0};
    int[] rightPos = {3,2};
    String hand;
    public static void main(String[] args){
        
    }
    public String solution(int[] numbers, String hand) {
        this.hand = (hand.equals("right")) ? "R" : "L";

        String answer = "";
        for (int num : numbers) {
            String Umji = pushNumber(num);
            answer += Umji;

            if(Umji.equals("L")) {leftPos = numpadPos[num]; continue;}
            if(Umji.equals("R")) {rightPos = numpadPos[num]; continue;}
        }
        return answer;
    }

    //num버튼을 누를 때 어디 손을 사용하는가
    private String pushNumber(int num) {
        if(num==1 || num==4 || num==7) return "L";
        if(num==3 || num==6 || num==9) return "R";

        // 2,5,8,0 일때 어디 손가락이 가까운가
        if(getDist(leftPos, num) > getDist(rightPos, num)) return "R";
        if(getDist(leftPos, num) < getDist(rightPos, num)) return "L";

        //같으면 손잡이
        return this.hand;
    }

    //해당 위치와 번호 위치의 거리
    private int getDist(int[] pos, int num) {
        return Math.abs(pos[0]-numpadPos[num][0]) + Math.abs(pos[1]-numpadPos[num][1]);
    }
}

사실 클론 코딩이나 다름없다. 왜냐하면 프로그래머스에 있는 답을 보고 그대로 따라적었으니까..!

그래도 클론 코딩하면서 모르는 부분이 있어서 몇 가지 찾아봤다

 

 

자바에서 "?" 연산자가 뭐였더라..?

헐.. 알고리즘 공부를 안하니까 연산자 조차 까먹은 것이다!

다시 찾아보니 if/else 관계를 나타낼 때 쓰는 연산자였다

 

예를 들면 이렇다

import java.util.*;

public class Pratice {
    public static void main(String[] args){
        int[] array = {1,2,3,5,6};

        for(int i = 0; i < array.length; i++){
            System.out.println(array[i] + "는" + (array[i] % 2 == 0 ? "짝수" : "홀수"));
            // ?를 사용하여 if/else의 문장을 확 줄였다!
        }
    }
}

 

출력 결과는

1는홀수
2는짝수
3는홀수
5는홀수
6는짝수

 

코딩 공부는 꾸준히 하자... 요즘엔 초등학생도 코딩하던데.. 대학생이 되어서야 시작한 나는 계속 달려야 한다

반응형

+ Recent posts