일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- design pattern
- useEffect
- 백준
- NextJS
- 리액트 훅
- 컴퓨터 네트워크
- 자바 공부
- vanillaJS
- 코틀린
- 프로그래밍 언어론
- JavaScript
- 프로그래머스 자바
- 프로그래머스
- react hook
- 자바스크립트
- react firebase
- Java
- 리액트
- 코딩테스트 고득점 Kit
- codesandbox
- 자바
- react
- 장고
- 프로그래머스 완전탐색
- useState
- websocket
- 데이터모델링과마이닝
- React JS
- 코딩테스트 고득점 Kit 완전탐색
- 디자인 패턴
Archives
- Today
- Total
기록하는 개발자
[프로그래머스][JAVA] 키패드 누르기 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/67256
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
* | 0 | # |
1. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작
→ '*' 키패드를 10, '0' 키패드를 11, ''#'키패드를 12로 간주한다.
→ Left와 Right의 값을 최초 초기화 할 때 각각 10과 12로 한다.
2-1. 누를 번호가 0 인경우 누를 번호를 11로 변경한다.(거리 계산을 위해)
2-2. 누를 번호를 3으로 나눈 나머지가 1이면 왼손, 0이면 오른손, 2이면 가까운 손으로 누른다.
각 키패드 간의 거리 계산 방법
→ ((현재번호-누를번호/3))+((현재번호-누를번호%3))
[ 예시 ]
Left = 1 Right = 6 n= 8
오른손과 누를 번호 사이의 거리
= ((6-8/3))+((6-8%3)) = 2 + 0 = 2
왼손과 누를 번호 사이의 거리
= ((1-8/3))+((1-8%3)) = 1 + 2 = 3
→ 왼손과의 거리가 더 가깝기 때문에 왼손으로 키패드를 누른다.
3. 누를 손가락이 정해지면 해당 키패드의 번호로 right 또는 left 값을 초기화한다.
class Solution {
public String solution(int[] numbers, String hand) {
StringBuilder sb = new StringBuilder();
int left=10, right=12;
int LDistance, RDistance;
for(int n : numbers) {
LDistance = 0; RDistance = 0;
if(n == 1 || n == 4 || n == 7) {
sb.append("L");
left = n;
}
else if(n == 3 || n == 6 || n == 9) {
sb.append("R");
right = n;
}
else {
if(n==0) n += 11;
LDistance = (Math.abs(n-left))/3 + (Math.abs(n-left))%3;
RDistance = (Math.abs(right-n))/3 + (Math.abs(right-n))%3;
if(LDistance == RDistance) {
if(hand.equals("right")) {
sb.append("R");
right = n;
}
else {
sb.append("L");
left = n;
}
}
else if(LDistance > RDistance) {
sb.append("R");
right = n;
}
else {
sb.append("L");
left = n;
}
}
}
return sb.toString();
}
}
728x90
'Algorithm' 카테고리의 다른 글
[백준][JAVA] 1913 : 달팽이 (0) | 2023.01.10 |
---|---|
[프로그래머스][JAVA] 숫자 문자열과 영단어 (0) | 2022.05.03 |
[백준][JAVA] 11729 : 하노이 탑 이동 순서 (0) | 2021.12.09 |
[백준][JAVA] 1697 : 숨바꼭질 (0) | 2021.10.07 |
[백준][JAVA] 7576 : 토마토 (0) | 2021.10.06 |