코딩테스트
[프로그래머스/javascript] 키보드 누르기(그리드 이용해서 다시풀것)
_서리__
2023. 2. 1. 17:44
function solution(numbers, hand) {
var answer = '';
let leftThumb = '*';
let rightThumb = '#';
let bb ='';
let aa='';
for(let i=0;i<numbers.length;i++){
if(numbers[i]===1||numbers[i]===4||numbers[i]===7){
answer+='L';
leftThumb = numbers[i]
}else if(numbers[i]===3||numbers[i]===6||numbers[i]===9){
answer+='R'
rightThumb = numbers[i]
}else{
let leftThumbR = 0;
let rightThumbR = 0;
if(numbers[i]===leftThumb) leftThumbR = 0
else{
if(numbers[i]===0) numbers[i]=11
if(leftThumb===0){
leftThumb=11
}
if(leftThumb==='*'){
leftThumb=10
}
if(leftThumb%3===1){
let a = Math.abs(Number(numbers[i])-Number(leftThumb+1));
leftThumbR++;
while(a>0){
a=a-3;
leftThumbR++;
}
}else{
let a = Math.abs(Number(numbers[i])-Number(leftThumb));
while(a>0){
a=a-3;
leftThumbR++;
}
}
if(numbers[i]===11) numbers[i]=0;
}
// //
if(rightThumb===numbers[i]){
rightThumbR = 0;
}else{
if(numbers[i]===0) numbers[i]=11
if(rightThumb===0){
rightThumb=11;
}
if(rightThumb==='#'){
rightThumb=12;
}
if(rightThumb%3===0){
let a = Math.abs(Number(numbers[i])-Number(rightThumb-1));
rightThumbR++;
while(a>0){
a=a-3;
rightThumbR++;
}
}else{
let a = Math.abs(Number(numbers[i])-Number(rightThumb));
while(a>0){
a=a-3;
rightThumbR++;
}
}
if(numbers[i]===11) numbers[i]=0;
}
//
aa+=leftThumbR
bb+=rightThumbR
//
if(leftThumbR<rightThumbR){
answer+='L'
leftThumb = numbers[i];
}else if(leftThumbR>rightThumbR){
answer+='R';
rightThumb = numbers[i]
}else if(leftThumbR===rightThumbR){
if(hand==='right'){
answer+='R';
rightThumb = numbers[i]
}else{
answer+='L';
leftThumb = numbers[i]
}
}
}
//모르겠다...rightThumb나 leftThumb가 0인 경우, '*'인경우, '#'인경우 고려하면 될듯...
}
return answer;
}
아주 복잡하게 풀었다 꼭 다시 풀어볼것