빙응의 공부 블로그
[Programmers]Lv.1 키패드 누르기 본문
📝풀이
나누기로 값을 구해서 진행하면 된다.
1 2 3
4 5 6
7 8 9
10 11 12
로 진행
class Solution {
public String solution(int[] numbers, String hand) {
StringBuilder answer = new StringBuilder();
int leftThumb = 10; // '*' 위치를 10으로 초기화
int rightThumb = 12; // '#' 위치를 12로 초기화
for (int number : numbers) {
if (number == 0) number = 11; // 0의 위치를 11로 변경
if (number % 3 == 1) { // 1, 4, 7인 경우
answer.append("L");
leftThumb = number;
} else if (number % 3 == 0) { // 3, 6, 9인 경우
answer.append("R");
rightThumb = number;
} else { // 2, 5, 8, 0인 경우
int leftDistance = getDistance(leftThumb, number);
int rightDistance = getDistance(rightThumb, number);
if (leftDistance < rightDistance || (leftDistance == rightDistance && hand.equals("left"))) {
answer.append("L");
leftThumb = number;
} else {
answer.append("R");
rightThumb = number;
}
}
}
return answer.toString();
}
private int getDistance(int thumb, int target) {
int thumbX = (thumb - 1) / 3;
int thumbY = (thumb - 1) % 3;
int targetX = (target - 1) / 3;
int targetY = (target - 1) % 3;
return Math.abs(thumbX - targetX) + Math.abs(thumbY - targetY);
}
}
/*
* 1 2 3
* 4 5 6
* 7 8 9
* 10 11 12
*/
'Argorithm' 카테고리의 다른 글
[Programmers]Lv.1 모의고사 (1) | 2024.01.02 |
---|---|
[Programmers]Lv.1 크레인 인형 뽑기 (0) | 2024.01.01 |
[Programmers]Lv.1 신규 아이디 추천 (1) | 2023.12.29 |
[Programmers]Lv.1 음양더하기 (0) | 2023.12.29 |
[Programmers]LV.1 로또의 최고 순위와 최저 순위 (0) | 2023.12.29 |