728x90
https://school.programmers.co.kr/learn/courses/30/lessons/67256
이 문제는 키패드 간 거리 계산만 잘 하면 쉽게 풀 수 있는 문제였다
(난 생각 못해서 찾아봄😅)
이렇게 되어 있으니까, *은 10, 0은 11, #은 12라고 생각한다
그리고 줄마다 숫자가 3씩 차이나고 왼쪽 오른쪽으로는 1씩 차이나니까
현재 위치에서 누를 위치까지의 거리를 3으로 나눈 몫과 3으로 나눈 나머지를 더해주면 된다
예를 들어 현재 1번 위치에서 8번을 누른다면 8-3=5 니까 (5/3) + (5%3) = 1 + 2 = 3이므로 거리는 3이 된다
그리고 1,4,7이면 왼손, 3,6,9면 오른손 쓰고
위 방법으로 거리계산해서 가까운 손으로 하되 거리가 같은 경우에는 오른손잡이는 오른손, 왼손잡이는 왼손으로 누르면 된다!
자바 코드)
import java.util.*;
class Solution {
public String solution(int[] numbers, String hand) {
//1, 4, 7 - L
// 3, 6, 9 - R
String answer = "";
int left = 10; //*
int right = 12; //#
for(int num : numbers) {
if(num==1 || num==4 || num==7) {
left = num;
answer += "L";
} else if(num==3 || num==6 || num==9) {
right = num;
answer += "R";
} else {
if(num == 0) {
num = 11;
}
int leftDist = Math.abs(num-left)/3 + Math.abs(num-left)%3;
int rightDist = Math.abs(num-right)/3 + Math.abs(num-right)%3;
if(leftDist<rightDist) {
answer += "L";
left = num;
} else if(leftDist>rightDist) {
answer +="R";
right = num;
} else {
if(hand.equals("left")) {
answer += "L";
left = num;
} else {
answer +="R";
right = num;
}
}
}
}
return answer;
}
}
참고)
https://shrimp-burger.tistory.com/185
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[2021 카카오 채용연계형 인턴십] 숫자 문자열과 영단어 - JAVA (1) | 2022.09.21 |
---|---|
[2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임 - JAVA (0) | 2022.09.20 |
[완전탐색] 최소직사각형 - JAVA (0) | 2022.09.17 |
[해시] 폰켓몬 - JAVA (0) | 2022.09.11 |
[2021 KAKAO BLIND RECRUITMENT] 신규 아이디 추천 - JAVA (0) | 2022.09.10 |
댓글