https://programmers.co.kr/learn/courses/30/lessons/67256
코딩테스트 연습 - 키패드 누르기
[1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL"
programmers.co.kr
문제 풀이
문제 유형은 '구현' 유형에 속한다 코드가 엄청 복잡하게 나왔다 LEVEL 1문제 수준에선 상당히 어려운 문제인것 같다
문제 접근법은 먼저 keypad라는 2차원 배열을 선언해주고 그 안에 문제에서 제시한 키패드 값을 넣어주었다
키패드 값을 넣어준 이유는 오른손과 왼손의 위치를 파악하기 위해서다
또한 위치 파악을 위해 position함수를 선언해주었고 이후에는 rightHand와 leftHand 변수를 선언한다음 오른손과 왼손의 초기 위치 값을 넣었다
그다음은 numbers 배열을 forEach()함수로 순회하면서 조건에 맞추어 왼손과 오른손이 누를 수 있는 값에 따라 'L'과 'R'값을 result 변수에 넣어주었다
이제 제일 중요한 가운데 숫자 0,2,5,8, 일 경우인데 가운데 숫자의 위치를 position함수를 통해 파악한 다음
오른손에 위치와 가운데 숫자 그리고 왼손과 가운데 숫자의 위치를 비교해 거리를 계산한다음 조건에 맞게
'L'과 'R'을 result에 추가해주었다 마지막으로 만약 구한 각각의 거리가 같다면 사용자가 오른손잡이인지 왼손잡이인지에 따라 result에 알맞는 값을 추가하는 방식으로 문제를 해결했다
'알고리즘 문제 풀이' 카테고리의 다른 글
프로그래머스[LEVEL 1] - 최소직사각형 (0) | 2022.02.04 |
---|---|
프로그래머스[LEVEL 1] - 신고결과 받기 ("2022 카카오 블라인드 코딩테스트") (0) | 2022.02.01 |
프로그래머스[LEVEL 1] (위클리 챌린지 2주차) - 상호평가 (0) | 2021.08.21 |
프로그래머스[LEVEL 1](2021 카카오 인턴쉽) - 숫자 문자열과 영단어 (0) | 2021.08.16 |
프로그래머스(2018 카카오 블라인드 코딩 테스트 1차) - 비밀지도 (0) | 2021.07.13 |