JavaScript
.reduce((acc,cur) => acc+cur,0)
.sort((a,b)=>a-b)
.findIndex(판별함수)
마라톤 참가자 명단 array1 , 완주자 명단 array2 가 존재합니다. 참가자 중엔 동명이인이 존재해요.
참가자 명단을 일단 객체로 만들어 주는 게 좋을 거 같아요(동명이인이 존재하니까)
{ 'a':2, 'b':1,'c':1}
이런식으로요.
그리고나서 완주자 명단을 for문을 통해 명단 객체를 돌면서 다 확인해줍시다. (존재하면 명단에서 한명씩 빼는거죠)
이렇게 하면 최종적으로 한명만 남겠네요.
function solution(participant,completion){
var answer = ''
let obj = participant.reduce((po,p)=>{
po[p] = po[p] ? po[p] + 1 : 1;
return po
},{})
completion.forEach(c=>{
if(obj[c] && obj[c]===1){
delete obj[c];
}else if(obj[c] && obj[c]!==1){
obj[c] -= 1;
}
})
answer = Object.keys(obj)[0]
return answer
}
commands 배열이 중요하네요. 이걸 기준으로 for문을 돌리서 각각의 command에 맞게끔 array에서 값들만 뽑아내면 될 거 같아요.
💥 여기서 sort 메서드 쓰려면요. 오름차순일 경우 .sort((a,b) => a-b)
이렇게 해줘야 합니다..기본중의 기본!!
function solution(array,commands){
var answer= [];
commands.forEach(command=>{
let temp =[]
array.forEach((a,idx) => {
if(idx>=command[0]-1 && idx<=command[1]-1){
temp.push(a);
}
})
temp.sort((a,b) => a-b);
answer.push(temp[command[2]-1);
})
return answer;
}
function solution(n,lost,reserve){
var answer = 0;
//1. 일단 가지고 있는 사람
answer = n - lost.length;
//2. 내꺼부터입자
lost = lost.filter(l=>{
let idx = reserve.findIndex(r => r===l);
if(idx===-1){
return l
}else{
reserve.splice(idx,1)
answer+=1;
}
})
lost.forEach(l=>{
const a = l+1;
const b = l-1;
for(let i =0;i<reserve.length;i++){
if(a===reserve[i] || b===reserve[i]){
answer += 1
reserve.splice(i,1)
break;
}
}
});
};
묹
오 이문제 어렵... 레벨1인데.. 어렵...
function solution(numbers, hand) {
function find(num,lH,rH){
const lD = Math.abs(phone[lH][0]-phone[num][0]) + Math.abs(phone[lH][1]-phone[num][1])
const rD = Math.abs(phone[rH][0]-phone[num][0]) + Math.abs(phone[rH][1]-phone[num][1])
if(lD===rD) return hand==='left'?'L':'R';
return lD<rD ? 'L':'R';
}
const phone = {
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 lH = '*'
let rH = '#'
let result = ''
for(let num of numbers){
if(num%3===1){
result += 'L'
lH=num
}else if (num!==0 && num%3===0){
result += 'R'
rH=num
}else{
result += find(num,lH,rH)
result[result.length-1]==='L'?lH=num:rH=num;
}
}
return result;
}