๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/์•Œ๊ณ ๋ฆฌ์ฆ˜

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/JAVA] ํ‚คํŒจ๋“œ ๋ˆ„๋ฅด๊ธฐ

by ynzu๐Ÿค 2022. 7. 25.
๋ฐ˜์‘ํ˜•


๐Ÿ‘‡ ๋ฌธ์ œ URL ๐Ÿ‘‡

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


2,5,8,0์ผ ๊ฒฝ์šฐ ์˜ค๋ฅธ์†, ์™ผ์†์ด ์œ„์น˜ํ•œ ํ‚คํŒจ๋“œ์—์„œ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ขŒํ‘œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€์—ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  Stream API์— ์žˆ๋Š” anyMatch๋ฅผ ์ด์šฉํ•˜์—ฌ ์ตœ์†Œํ•œ ํ•œ ๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š”์ง€๋ฅผ ์ฒดํฌํ•˜์˜€๋‹ค.

import java.util.Arrays;

class Solution {
    public String solution(int[] numbers, String hand) {
         String answer = "";

        int[] leftHand = {1,4,7};
        int[] rightHand = {3,6,9};

        int[] leftHandLocation = {3,0};
        int[] rightHandLocation = {3,2};

        StringBuffer sb = new StringBuffer();
        for(int num : numbers){
            //1,4,7์ธ ๊ฒฝ์šฐ
            if(Arrays.stream(leftHand).anyMatch( a -> a==num)){
                sb.append("L");
                leftHandLocation = getIndex(num);
            
            //3,6,9์ธ ๊ฒฝ์šฐ
            }else if(Arrays.stream(rightHand).anyMatch( a -> a==num)){
                sb.append("R");
                rightHandLocation = getIndex(num);
            
            //2,5,8,0 ์ธ ๊ฒฝ์šฐ
            }else{
                int[] index = getIndex(num);

                int rightResult =  Math.abs(index[0] - rightHandLocation[0])+ Math.abs(index[1] - rightHandLocation[1]);
                int leftResult =  Math.abs(index[0] - leftHandLocation[0])+ Math.abs(index[1] - leftHandLocation[1]);
                
                if(rightResult>leftResult){
                    sb.append("L");
                    leftHandLocation = getIndex(num);
                    
                }else if(rightResult<leftResult){
                    sb.append("R");
                    rightHandLocation = getIndex(num);
                    
                }else{
                    hand = hand.toUpperCase().substring(0,1);
                    if(hand.equals("R")){
                        rightHandLocation = getIndex(num);
                    }else{
                        leftHandLocation = getIndex(num);
                    }
                    sb.append(hand);

                }

            }
          
        }
        answer = sb.toString();
        return answer;
    }
    
    //์ขŒํ‘œ ๊ตฌํ•˜๊ธฐ. [0]์€ x์ขŒํ‘œ, [1]์€ y์ขŒํ‘œ
    public int[] getIndex(int num){
        int[][] pad = {{1, 2, 3}, {4,5,6,}, {7,8,9}, {10,0,11}};
        int[] result = new int[2];

        for(int i =0 ; i<pad.length; i++){
            for(int j=0; j<pad[i].length; j++){

                if(pad[i][j] == num){
                    result[0] = i;
                    result[1] = j;
                }
            }
        }
        return result;
    }
}

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€