https://school.programmers.co.kr/learn/courses/30/lessons/67256
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
public String solution(int[] numbers, String hand) {
String answer = "";
int l = 10, r = 12;
for (int number : numbers) {
if (number == 1 || number == 4 || number == 7) {
l = number;
answer += "L";
} else if (number == 3 || number == 6 || number == 9) {
r = number;
answer += "R";
} else {
int leftD = getDistance(l,number);
int rightD = getDistance(r,number);
if (leftD < rightD) {
l = number;
answer += "L";
} else if (leftD > rightD) {
r = number;
answer += "R";
} else if (hand.equals("right")) {
r = number;
answer += "R";
} else {
l = number;
answer += "L";
}
}
}
return answer;
}
private int getDistance(int current, int target) {
if (current == 0) {
current = 11;
}
if (target == 0) {
target = 11;
}
int curRow = (current - 1) / 3;
int curCol = (current - 1) % 3;
int targetRow = (target - 1) / 3;
int targetCol = (target - 1) % 3;
return Math.abs(curRow - targetRow) + Math.abs(curCol - targetCol);
}
📍포인트
1. // 1 2 3// 4 5 6// 7 8 9// 10 11 12 형식으로 핸드폰이 구성되어 있다고 setting.
2. 거리를 구하는 포인트를 인지하고 진행하면 된다.
3. 좌표를 어떻게 처리할지 생각해보자. hint) 3*4 격자
'코딩테스트' 카테고리의 다른 글
[코딩테스트(Java)] 프로그래머스 150370 개인정보 수집 유효기간 (1) | 2025.03.17 |
---|---|
[코딩테스트(Java)] 프로그래머스 118666 성격 유형 검사하기 (0) | 2025.03.16 |
[코딩테스트(Java)] 프로그래머스 64061 크레인 인형뽑기 게임 (0) | 2025.03.14 |
[코딩테스트(Java)] 프로그래머스 81301 숫자 문자열과 영단어 (0) | 2025.03.13 |
[코딩테스트(Java)] 프로그래머스 77484 로또의 최고 순위와 최저 순위 (0) | 2025.03.12 |