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
- 개발자스터디
- 브루트포스
- dfs
- java
- 프로그래머스
- 코딩테스트
- 너비우선탐색
- 99클럽
- python
- BOJ
- 자바
- 삼성청년SW아카데미
- 알고리즘
- SSAFY수료식
- 99일지
- 깊이우선탐색
- 다이나믹프로그래밍
- 항해
- 백트래킹
- programmers
- BFS
- ssafy
- DP
- 문자열
- 싸피
- 파이썬
- 백준
- til
- 위상정렬
- 구현
Archives
- Today
- Total
EunJng
[PRO] 키패드 누르기 | Java 본문
문제
프로그래머스 코딩테스트 연습 2020 카카오 인턴십 - 키패드 누르기 | Lv.1
https://school.programmers.co.kr/learn/courses/30/lessons/67256
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
자바 풀이
class Solution {
public String solution(int[] numbers, String hand) {
String answer = "";
int[] left = {3, 0};
int[] right = {3, 2};
for (int i=0; i<numbers.length; i++) {
int n = numbers[i];
if(n == 1 || n == 4 | n == 7) {
answer += "L";
left[0] = n/3;
left[1] = 0;
}
else if(n == 3 || n == 6 || n == 9) {
answer += "R";
right[0] = n/3 - 1;
right[1] = 2;
}
else {
if(n == 0) {
n = 10;
}
int leftDist = Math.abs(n/3 - left[0]) + Math.abs(left[1] - 1);
int rightDist = Math.abs(n/3 - right[0]) + Math.abs(right[1] - 1);
if(leftDist < rightDist) {
answer += "L";
left[0] = n/3;
left[1] = 1;
} else if (leftDist > rightDist) {
answer += "R";
right[0] = n/3;
right[1] = 1;
} else {
if(hand.equals("left")) {
answer += "L";
left[0] = n/3;
left[1] = 1;
} else {
answer += "R";
right[0] = n/3;
right[1] = 1;
}
}
}
}
return answer;
}
}
- 변수 left, right에 현재 손가락의 위치를 [행, 열] 형태로 저장
- 숫자가 2, 5, 8, 0일 경우 해당 숫자의 행 열 기준으로 왼손 오른손 간의 거리를 계산하여 짧은 쪽의 손가락의 위치 변경
'PROBLEM > PROGRAMMERS' 카테고리의 다른 글
[PRO] 숫자 게임 | Java | Python (0) | 2023.06.14 |
---|---|
[PRO] 게임 맵 최단거리 | Java (0) | 2023.06.13 |
[PRO] 여행 경로 | Python (0) | 2023.05.08 |
[PRO] 기둥과 보 설치 | Python (0) | 2023.05.02 |
[PRO] 불량사용자 | Python (0) | 2023.04.29 |