728x90
https://school.programmers.co.kr/learn/courses/30/lessons/67256
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이 문제는 키패드 간 거리 계산만 잘 하면 쉽게 풀 수 있는 문제였다
(난 생각 못해서 찾아봄😅)
이렇게 되어 있으니까, *은 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
[JAVA] 프로그래머스 Lv.1 : 키패드 누르기
🔥 2020 카카오 인턴십 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨
shrimp-burger.tistory.com
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 |
댓글