프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr





👇 내가 작성한 코드
import java.util.*;
class Solution {
int[][] key = {
{3, 1}, // 0
{0, 0}, // 1
{0, 1}, // 2
{0, 2}, // 3
{1, 0}, // 4
{1, 1}, // 5
{1, 2}, // 6
{2, 0}, // 7
{2, 1}, // 8
{2, 2}, // 9
};
int[] leftLo = {3, 0}; // 현재 왼쪽 손가락의 위치
int[] rightLo = {3, 2}; // 현재 오른쪽 손가락의 위치
public String solution(int[] numbers, String hand) {
StringBuilder answer = new StringBuilder();
for(int n : numbers) {
switch(n) {
case 1: case 4: case 7:
answer.append("L"); // 왼손으로 누르기
leftLo = key[n]; // 왼쪽 손가락 위치 초기화
break;
case 3: case 6: case 9:
answer.append("R"); // 오른손으로 누르기
rightLo = key[n]; // 오른 손가락 위치 초기화
break;
default:
int leftDist = getDist(leftLo, key[n]); // 현재 왼손과 누를 숫자의 거리 구하기
int rightDist = getDist(rightLo, key[n]); // 상동
if(leftDist < rightDist || (leftDist == rightDist && hand.equals("left"))) {
answer.append("L");
leftLo = key[n];
} else {
answer.append("R");
rightLo = key[n];
}
break;
}
}
return answer.toString();
}
// 현재 위치와 누를 숫자의 거리 구하는 메소드
public int getDist(int[] key1, int[] key2) {
return Math.abs(key1[0] - key2[0]) + Math.abs(key1[1] - key2[1]);
}
}
느낀 점 및 정리 ✍️
1. 재밌게 풀었따
'Algorithm & SQL > Programmers' 카테고리의 다른 글
| [Programmers Lv.2 / Java] 가장 큰 수 (0) | 2024.03.28 |
|---|---|
| [Programmers Lv.3 / Java] 입국심사(이분탐색) (0) | 2024.03.27 |
| [Programmers Lv.1 / Java] 신규 아이디 추천 (0) | 2024.03.25 |
| [Programmers Lv.2 / Java] 게임 맵 최단거리(BFS) (0) | 2024.03.24 |
| [Programmers Lv.1 / Java] 크기가 작은 부분문자열 (0) | 2024.03.24 |