프로그래머스 초급단계 키패드 누르기 알고리즘문제이다.
조건.
1. 1,4,7일경우 L(왼손으로 누르고)
2. 3,6,9일경우 R(오른손으로 누르고)
3. 0,2,5,8일경우 왼손과 오른손의 거리중 가까운 손으로 누른다 이때 동일한 거리에 있을 경우 매개변수로 투입된 손으로 누른다("left" -> L , "Right" -> R)
============================================================================
아래는 나의 풀이이다.
1. 문제를 풀면서 가장 힘들었던건 0,2,5,8일때 왼손과 오른손 거리를 측정해서 가까운 거리의 손으로 누르는것을 표현하는게 힘들었다.
== > 이것을 해결하기 위하여 번호를 누를때 마다 왼손(Left)과 오른손(Right)의 좌표를 저장할 List를 생성하여 저장하였다 (List는 요소를 순서대로 저장한다.)
== > 0,2,5,8을 누를땐 우선 0,2,5,8에 해당하는 좌표를 구한다음에 valCheck라는 함수를 통해서 해당 좌표와 왼손 좌표와 오른손 좌표중 거리가 더 작은 쪽의 손으로 누르게 하였다.
============================================================================ 아래로는 다른사람의 코드를 참조해서 내코드를 더 쉽게 바꿔보겠다.
다른 사람의 코드를 보고서 일단 내가 손으로 누른 좌표를 계속 해서 쌓아 갈 필요가 없다는 것을 확인 하였고
List 대신 String 문자열로 사용해도 되고 int[] 배열로 나타내도 될것 같다.
String 문자열로 사용할 경우 내가 짠 코드를 사용할 수 있지만 int[] 를 사용할 경우 코드가 바뀌어야 한다.
int[]로 사용할경우는 우선 번호를 누를때마다 left와 right 손의 좌표를 바꿔줘야 하는데
해당 값을 바로바로 넣어주기위해서 일단 좌표설정을 해놓는다. 내가 처음 생각했던게 아마 이것과 동일한 것같다.
번호를 누를떄마다 keyPad[num] 값이 left 또는 Right에 들어가게된다.
또한 현재 손의 좌표와 KeyPad의 좌표값을 바로 비교할수 있어서 더 간결하고 보기 쉬운 코드가 되었다.
'Algorithm' 카테고리의 다른 글
[Algorithm] 없는 숫자 더하기 (0) | 2022.05.27 |
---|---|
[Algorithm] 인형 제거 게임 (0) | 2022.05.26 |
[Algorithm] 숫자문자열과 영단어 (0) | 2022.05.24 |
[Algorithm] 아이디 생성시 규칙에 따른 변경 후 생성 알고리즘 (0) | 2022.05.23 |
[Algorithm] 로또 최대 등수 및 최저 등수 구하기 (0) | 2022.05.21 |