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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제푸는데 40분정도 걸렸습니다.

그냥 구현 + 문자열 문제입니다.

 

기억해야할점

첫번째. 코드 복사할떄 변경할것들은 변경해야합니다.

lefthand가 아니라 righthand를 썻어야했는데 

 

 

import java.util.*;
import java.io.*;

class Solution {
    
    static public StringBuilder strbuilder = new StringBuilder();
    static public Node lefthand = new Node(3,0);
    static public Node righthand = new Node(3,2);
    public String solution(int[] numbers, String hand) {
        
        

        for(int i=0;i<numbers.length;i++){
           if(numbers[i] == 1){
               strbuilder.append("L");
               lefthand.row = 0;
               lefthand.col = 0;
           }
           else if(numbers[i] == 4){
               strbuilder.append("L");
               lefthand.row = 1;
               lefthand.col = 0;
           }
           else if(numbers[i] == 7){
               strbuilder.append("L");
               lefthand.row = 2;
               lefthand.col = 0;
           }
           
            else if(numbers[i] == 2){
                Node temp = new Node(0,1);
                
                int righthandabsdistance = Math.abs(temp.row - righthand.row) + Math.abs(temp.col - righthand.col);
                int lefthandabsdistance = Math.abs(temp.row - lefthand.row) + Math.abs(temp.col - lefthand.col);
                System.out.println(righthandabsdistance);
                System.out.println(lefthandabsdistance);
                if(lefthandabsdistance < righthandabsdistance){
                    strbuilder.append("L");
                    lefthand = temp;
                }else if(lefthandabsdistance == righthandabsdistance){
                    if(hand.equals("left")){
                        strbuilder.append("L");
                        lefthand = temp;
                    }else if(hand.equals("right")){
                        strbuilder.append("R");
                        righthand = temp;
                    }   
                }else if(lefthandabsdistance > righthandabsdistance){
                    strbuilder.append("R");
                    righthand = temp;
                }
                
            }
            
            else if(numbers[i] == 5){
                Node temp = new Node(1,1);
                int righthandabsdistance = Math.abs(temp.row - righthand.row) + Math.abs(temp.col - righthand.col);
                int lefthandabsdistance = Math.abs(temp.row - lefthand.row) + Math.abs(temp.col - lefthand.col);
                if(lefthandabsdistance < righthandabsdistance){
                    strbuilder.append("L");
                    lefthand = temp;
                }else if(lefthandabsdistance == righthandabsdistance){
                    if(hand.equals("left")){
                        strbuilder.append("L");
                        lefthand = temp;
                    }else if(hand.equals("right")){
                        strbuilder.append("R");
                        righthand = temp;
                    }   
                }else if(lefthandabsdistance > righthandabsdistance){
                    strbuilder.append("R");
                    righthand = temp;
                }
                
            }
// LRLLL _ R이 나와야함.
            else if(numbers[i] == 8){
                Node temp = new Node(2,1);
                int righthandabsdistance = Math.abs(temp.row - righthand.row) + Math.abs(temp.col - righthand.col);
                int lefthandabsdistance = Math.abs(temp.row - lefthand.row) + Math.abs(temp.col - lefthand.col);
                if(lefthandabsdistance < righthandabsdistance){
                    strbuilder.append("L");
                    lefthand = temp;
                }else if(lefthandabsdistance == righthandabsdistance){
                    if(hand.equals("left")){
                        strbuilder.append("L");
                        lefthand = temp;
                    }else if(hand.equals("right")){
                        strbuilder.append("R");
                        righthand = temp;
                    }   
                }else if(lefthandabsdistance > righthandabsdistance){
                    strbuilder.append("R");
                    righthand = temp;
                }
                
            }
             
            else if(numbers[i] == 0){
                Node temp = new Node(3,1);
                int righthandabsdistance = Math.abs(temp.row - righthand.row) + Math.abs(temp.col - righthand.col);
                int lefthandabsdistance = Math.abs(temp.row - lefthand.row) + Math.abs(temp.col - lefthand.col);
                if(lefthandabsdistance < righthandabsdistance){
                    strbuilder.append("L");
                    lefthand = temp;
                }else if(lefthandabsdistance == righthandabsdistance){
                    if(hand.equals("left")){
                        strbuilder.append("L");
                        lefthand = temp;
                    }else if(hand.equals("right")){
                        strbuilder.append("R");
                        righthand = temp;
                    }   
                }else if(lefthandabsdistance > righthandabsdistance){
                    strbuilder.append("R");
                    righthand = temp;
                }                
            }
           else if(numbers[i] == 3){
               strbuilder.append("R");
               righthand.row = 0;
               righthand.col = 2;
           }
           else if(numbers[i] == 6){
               strbuilder.append("R");
               righthand.row = 1;
               righthand.col = 2;
           }
           else if(numbers[i] == 9){
               strbuilder.append("R");
               righthand.row = 2;
               righthand.col = 2;
           }            
         

            
        }
        
        String answer = "";
        answer = strbuilder.toString();
        System.out.println(answer);
        return answer;
    }
}

class Node{
    int row;
    int col;
    public Node(int row, int col){
        this.row = row;
        this.col = col;
    }
}

+ Recent posts