이번 글은 아래 링크의 글들을 참조하여 작성하였습니다.
https://tech.kakao.com/2020/07/01/2020-internship-test/
2020 카카오 인턴십 for Tech developers 문제해설
2020년 카카오의 여름 인턴십이 시작 되었습니다.여름 인턴십의 첫번째 관문인 코딩 테스트가 2020년 5월 9일 오후 2시부터 6시까지 진행되었는데요, 온라인으로 진행되었기 때문에 코로나19로부터
tech.kakao.com
https://onlydev.tistory.com/61
[프로그래머스] 키패드 누르기 | 카카오 인턴 코딩 테스트 | JavaScript
[카카오 인턴] 키패드 누르기 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하
onlydev.tistory.com
이번 문제에 대한 자세한 사항은 아래 링크를 참조하길 바란다.
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
처음엔 입력 숫자와 손가락 위치의 차이값을 좌표가 아닌 숫자 그 자체로 계산을 해서 답이 자꾸 어긋났었다. 다른 사람들의 코드를 참고했더니 키패드의 숫자마다 좌표값을 매겨 객체에 담아 계산하면 되는 문제였다. 문제를 꼼꼼히 읽어 제시하는 제한 조건을 반드시 지켜야 함을 다시금 느꼈다.
Solutions
Solution 1.
const input = [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5]; // const input = [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2]; // const input = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]; console.log(solution(input, 'right')); function solution(numbers, hand) { const keyPad = { 1: [0, 0], 2: [1, 0], 3: [2, 0], 4: [0, 1], 5: [1, 1], 6: [2, 1], 7: [0, 2], 8: [1, 2], 9: [2, 2], '*': [0, 3], 0: [1, 3], '#': [2, 3], }; let leftPosition = '*'; let rightPosition = '#'; let answer = ''; for (const num of numbers) { if (num === 1 || num === 4 || num === 7) { answer += 'L'; leftPosition = num; } else if (num === 3 || num === 6 || num === 9) { answer += 'R'; rightPosition = num; } else { const rightDiff = Math.abs(keyPad[num][0] - keyPad[rightPosition][0]) + Math.abs(keyPad[num][1] - keyPad[rightPosition][1]); const leftDiff = Math.abs(keyPad[num][0] - keyPad[leftPosition][0]) + Math.abs(keyPad[num][1] - keyPad[leftPosition][1]); if (rightDiff < leftDiff) { answer += 'R'; rightPosition = num; } else if (rightDiff > leftDiff) { answer += 'L'; leftPosition = num; } else { if (hand === 'right') { answer += 'R'; rightPosition = num; } else { answer += 'L'; leftPosition = num; } } } } return answer; }
함께 보기
- Math.abs() method
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs
Math.abs() - JavaScript | MDN
The Math.abs() function returns the absolute value of a number. That is, it returns x if x is positive or zero, and the negation of x if x is negative.
developer.mozilla.org
'👩💻 Programming > Coding Test 문제 풀이' 카테고리의 다른 글
[Programmers] level 1: 비밀지도 by JavaScript (0) | 2022.06.30 |
---|---|
[Programmers] level 1: 신규 아이디 추천 by JavaScript (0) | 2022.06.29 |
[Programmers] level 1: 숫자 문자열과 영단어 by JavaScript (0) | 2022.06.29 |
[Programmers] level 1: 신규 아이디 추천 by JavaScript (0) | 2022.06.28 |
[Programmers] level 1: 신고 결과 받기 by JavaScript (0) | 2022.06.28 |
댓글