# 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/67256
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
목차
나의 풀이 포인트
- 0~9까지의 키패드를 배열화. ex) 1은 (0,0), 2는 (0,1)
나의 문제풀이
class Solution {
public String solution(int[] numbers, String hand) {
StringBuilder answer = new StringBuilder();
int[][] keypad = {{3,1}, {0,0}, {0,1}, {0,2}, {1,0}, {1,1}, {1,2}, {2,0}, {2,1}, {2,2}};
int[] left = {3,0};
int[] right = {3,2};
boolean doLeft = true;
for (int number : numbers) {
switch (number) {
case 1: case 4: case 7:
doLeft = true;
break;
case 3: case 6: case 9:
doLeft = false;
break;
case 2: case 5: case 8: case 0:
int leftDistance = Math.abs(keypad[number][0] - left[0]) + Math.abs(keypad[number][1] - left[1]);
int rightDistance = Math.abs(keypad[number][0] - right[0]) + Math.abs(keypad[number][1] - right[1]);
if (leftDistance > rightDistance) {
doLeft = false;
} else if (leftDistance < rightDistance) {
doLeft = true;
} else {
doLeft = hand.equals("left");
}
break;
}
if (doLeft) {
left = keypad[number];
answer.append("L");
} else {
right = keypad[number];
answer.append("R");
}
}
return answer.toString();
}
}
'알고리즘 문제풀이 > 프로그래머스 Level 1' 카테고리의 다른 글
[2022 KAKAO TECH INTERNSHIP/Java] 성격 유형 검사하기 (0) | 2023.07.23 |
---|---|
[2018 KAKAO BLIND RECRUITMENT[1차]/Java] 비밀지도 (0) | 2023.07.23 |
[2019 KAKAO BLIND RECRUITMENT/Java] 실패율 (0) | 2023.07.20 |
[2021 KAKAO BLIND RECRUITMENT/Java] 신규 아이디 추천 (0) | 2023.07.20 |
[2021 카카오 채용연계형 인턴십/Java] 숫자 문자열과 영단어 (0) | 2023.07.20 |