자바스크립트 코딩 테스트
오늘의 하이라이트 문제
[카카오 인턴] 키패드 누르기
https://programmers.co.kr/learn/courses/30/lessons/67256
누구보다도 긴 코드로 풀은 것 같다.
풀려서 정말 다행이다.
let initial =[['N','N','N'],['N','N','N'],['N','N','N'],['L','N','R']]
// 숫자마다의 좌표
let locations = {1:[0,0],2:[0,1],3:[0,2],4:[1,0],5:[1,1],6:[1,2],7:[2,0],8:[2,1],9:[2,2],0:[3,1]}
function solution(numbers, hand) {
let result = ''
let array = initial
for (let i=0;i<numbers.length;i++) {
let input = numbers[i]
if (input==1||input==4||input==7) {
array = putFinger(input, 'L', array)
result += 'L'
} else if (input==3||input==6||input==9) {
array = putFinger(input, 'R', array)
result += 'R'
} else if (input==2||input==5||input==8||input==0) {
let finger = whatFinger(input, array, hand)
array = putFinger(input, finger, array)
result += finger
}
}
return result
}
// 어떤 위치에 L또는 R을 삽입하고 원래 있던 것은 없애주는 함수
function putFinger(n, finger, array) {
// 기존의 L 또는 R 없애기
for (let i=0;i<4;i++) {
let line = array[i]
for (let j=0;j<3;j++) {
if (line[j] == finger) {
line[j] = 'N'
}
}
}
let row = locations[n][0]
let column = locations[n][1]
array[row][column] = finger
return array
}
// 임의의 숫자 버튼과 각 손가락과의 거리를 검사해서 L, R 중 더 가까운 것은 출력, 같으면 hand를 출력
function whatFinger(n, array, hand) {
// 숫자키의 좌표
let num_loc = locations[n]
// 왼손 좌표
// 오른손 좌표
let left_loc
let right_loc
for (let i=0;i<4;i++) {
let line = array[i]
for (let j=0;j<3;j++) {
if (line[j] == 'L') {
left_loc = [i, j]
}
if (line[j] == 'R') {
right_loc = [i, j]
}
}
}
// 좌표 사이의 거리 function
function distance(a, b) {
return Math.abs(a[0]-b[0])+Math.abs(a[1]-b[1])
}
// 왼 거리
let left_dist = distance(num_loc, left_loc)
// 오른 거리
let right_dist = distance(num_loc, right_loc)
// 왼 거리가 짧으면 L 리턴
if (left_dist < right_dist) return 'L'
// 오른 거리가 짧으면 R 리턴
if (left_dist > right_dist) return 'R'
// 같으면 hand 리턴
if (left_dist == right_dist) {
if (hand == 'right') return 'R'
if (hand == 'left') return 'L'
}
}
그리고 git 강의를 마저 듣는 중이다!
'Development' 카테고리의 다른 글
[TIL] CS 책 읽기, JS 코딩 테스트, Git 강의 (0) | 2022.01.19 |
---|---|
[TIL] 컴퓨터 구조와 프로그래밍, git, 코딩테스트, OBS (0) | 2022.01.18 |
[TIL] 자바스크립트 코딩테스트, CS 책 독서 (0) | 2022.01.16 |
[WIL] 항해99의 첫 주 (0) | 2022.01.16 |
[TIL] 자바스크립트 코딩테스트, 강의 수강, 알고리즘 (0) | 2022.01.15 |