Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 백준 11659
- MySQL
- 싱글톤패턴
- String.valueOf()
- 클라우드에서 도커 실행하기
- Spring MVC 동작원리
- 알고리즘
- 자바
- 투포인터알고리즘
- 재귀함수
- Spring MVC 구성요소
- 성능테스트툴
- List.of
- java
- 구간합구하기
- GCP
- 버블정렬
- Spring Web MVC
- OOP
- 프로그래머스
- 재귀와반복문
- 인텔리제이
- 코딩테스트
- vm인스턴스생성
- 스택
- 11659
- 코드스테이츠
- 코드스테이츠 백엔드
- 백준
- Array.asList
Archives
- Today
- Total
순간을 기록으로
[Java] 키패드 누르기 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/67256
주의할 점
거리값을 구하기 위해서는 키패드의 위치를 2차원 배열과 인덱스를 사용해야된다. 그리고 키패드가 0일 때 처리해주는 것도 필요하다.
코드
public class Solution {
public String solution(int[] numbers, String hand) {
String answer = "";
StringBuilder sb = new StringBuilder();
int left_xPos = 0;
int left_yPos = 3;
int right_xPos = 2;
int right_yPos = 3;
for (int x : numbers) {
if (x == 1 || x == 4 || x == 7) {
sb.append("L");
left_xPos = 0;
left_yPos = x/3;
}
else if (x == 3 || x == 6 || x == 9) {
sb.append("R");
right_xPos = 2;
right_yPos = x/3 - 1;
}
else if (x == 2 || x == 5 || x == 8 || x == 0) {
if (x == 0)
x += 11;
int target_xPos = 1;
int target_yPos = x/3;
int leftDistance = Math.abs(target_xPos - left_xPos) + Math.abs(target_yPos - left_yPos);
int rightDistance = Math.abs(target_xPos - right_xPos) + Math.abs(target_yPos - right_yPos);
if (leftDistance < rightDistance) {
sb.append("L");
left_xPos = 1;
left_yPos = x/3;
}
else if(leftDistance > rightDistance) {
sb.append("R");
right_xPos = 1;
right_yPos = x/3;
} else {
if (hand.equals("left")) {
sb.append("L");
left_xPos = 1;
left_yPos = x/3;
} else {
sb.append("R");
right_xPos = 1;
right_yPos = x/3;
}
}
}
}
answer = sb.toString();
return answer;
}
public static void main(String[] args) {
Solution s = new Solution();
int[] numbers1 = {7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2};
System.out.println(s.solution(numbers1, "left"));
int[] numbers2 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
System.out.println(s.solution(numbers2, "right"));
}
}
느낀 점
오랫동안 못풀었는데 배열과 인덱스 개념을 이용해서 풀었다.
왼손과 오른손의 위치를 저장하기 위해서는 변수를 설정해야하고 x,y 값을 저장해야되니 2차원 배열로 하면 더 좋을 것이다. 거리는 각 좌표를 x끼리, y끼리 뺀 다음 절댓값을 취해주면 된다.
'Problem Solving' 카테고리의 다른 글
[Java] 소수만들기 (0) | 2022.01.13 |
---|---|
[Java] 없는 숫자 더하기 (0) | 2022.01.13 |
[Java] 공주구하기 (0) | 2022.01.12 |
[Java] 연속된 자연수의 합 (0) | 2022.01.12 |
[JAVA] 신규 아이디 추천 (0) | 2022.01.12 |
Comments