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 |
Tags
- react-native-dotenv
- electron-packager
- adb pair
- github 100mb
- camera permission
- silent printing
- github lfs
- vercel git lfs
- ELECTRON
- device in use
- rolldown
- Recoil
- camera access
- github pdf
- ffi-napi
- adb connect
- npm package
- augmentedDevice
- 이미지 데이터 타입
- animation
- custom printing
- html
- 티스토리 성능
- react-native
- Can't resolve
- nextjs
- Git
- dvh
- Failed to compiled
- Each child in a list should have a unique "key" prop.
Archives
- Today
- Total
Bleeding edge
[프로그래머스] 키패드 누르기 - 자바스크립트 본문
https://school.programmers.co.kr/learn/courses/30/lessons/67256
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
별로 좋아하는 방식은 아니지만 하드코딩을 이용하여 풀었다.
1-1 x, y에 알맞게 번호와 문자를 배치한다.
1-2 return할 result를 만든다.
1-3 left와 right의 초기값을 만든다
const list = { 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], "*":[3,0], 0:[3,1], "#":[3,2]}
let result = ""
let [left, right] = ["*", "#"]
2-1 주어진 numbers에서 map을 사용하여 값에 한개씩 접근한다
2-2-1 x값이 0이면 left, 2이면, right로 값을 바꾼다
2-2-2 result에 2-2-1의 첫글자를 붙인다 (예시 : result = result + "L")
2-2-3 2-2-1에 해당하지 않는 경우에는, 현재 값과-left의 값, 현재값 - right 값을 비교해서 더 작은 값(절대값 기준)을 기준으로 2-2-1, 2-2-2를 접근한다.
2-2-4 만일 값이 같다고하면 왼손잡이면, 왼손에 붙이고, 오른손 잡이면 오른손에 붙인다.
numbers.map((element)=>{
if(list[element][1]===0){
left = element;
result = result + "L"
return
}else if(list[element][1]===2){
right = element;
result = result + "R"
return
}
const leftDistance = Math.abs(list[element][0]-list[left][0]) +
Math.abs(list[element][1]-list[left][1])
const rightDistance = Math.abs(list[element][0]-list[right][0]) +
Math.abs(list[element][1]-list[right][1])
if(rightDistance>leftDistance){
left = element
result = result + "L"
}else if(leftDistance>rightDistance){
right = element
result = result + "R"
}else{
if(hand ==="right"){
right= element
result = result + "R"
}else{
left = element
result = result + "L"
}
}
})
전체풀이
function solution(numbers, hand) {
const list = { 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], "*":[3,0], 0:[3,1], "#":[3,2]}
let result = ""
let [left, right] = ["*", "#"]
numbers.map((element)=>{
if(list[element][1]===0){
left = element;
result = result + "L"
return
}else if(list[element][1]===2){
right = element;
result = result + "R"
return
}
const leftDistance = Math.abs(list[element][0]-list[left][0]) +
Math.abs(list[element][1]-list[left][1])
const rightDistance = Math.abs(list[element][0]-list[right][0]) +
Math.abs(list[element][1]-list[right][1])
if(rightDistance>leftDistance){
left = element
result = result + "L"
}else if(leftDistance>rightDistance){
right = element
result = result + "R"
}else{
if(hand ==="right"){
right= element
result = result + "R"
}else{
left = element
result = result + "L"
}
}
})
return result
}
'코딩테스트 공부' 카테고리의 다른 글
[프로그래머스] 멀리뛰기 - 자바스크립트 (0) | 2022.07.22 |
---|---|
[프로그래머스] 크레인 인형뽑기 - 자바스크립트 (0) | 2022.07.21 |
[프로그래머스] 신고 결과 받기 - 자바스크립트 (0) | 2022.07.18 |
최소공배수와 최대공약수에 관해서 (0) | 2022.07.06 |
[LeetCode] 2150. Find All Lonely Numbers in the Array - 자바스크립트 0630 (0) | 2022.06.30 |