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