function solution(t, p) {
var answer = 0;
var lastIdx = t.length;
var len = p.length; //잘라야하는 문자열 크기
var now = 0;
while(lastIdx-len>=now){
let copy = t.slice(now,len+now)
if(Number(copy)<=Number(p)){
answer++;
}
now++;
}
return answer;
}
function solution(players, callings) {
var answer = [];
var ph = new Map();
for(let idx in players){
ph.set(players[idx],idx);
}
answer = players;
let ans = [];
callings.forEach((val)=>{
let idx = ph.get(val);
ph.set(answer[idx-1],idx);
answer.splice(idx,1);
answer.splice(idx-1,0,val);
ph.set(val,idx-1)
})
return answer;
}
시간소요를 줄이기 위해서 findIndex 대신 해시맵을 사용해 플레이어들의 등수를 인덱싱 한 것 까진 괜찮았으나,
여전히 splice를 사용한 탓에 4개의 테스트에서 시간초과가 떴다.
통과한 코드
function solution(players, callings) {
var answer = [];
var ph = new Map();
for(let idx in players){
ph.set(players[idx],idx);
}
answer = players;
callings.forEach((val)=>{
let idx = ph.get(val);
ph.set(answer[idx-1],idx);
let tempt = answer[idx-1]
answer[idx]=tempt;
answer[idx-1]=val;
ph.set(val,idx-1)
})
return answer;
}
생각해보니 중간에 뭔가를 삽입할 일이 없는데 splice를 사용하는것은 비효율적이란 생각이 들었다.
function solution(targets) {
var answer = 0;
targets.sort((a,b)=>a[1]-b[1]);
console.log(targets)
var max = 0;
for(let i = 0; i<targets.length;i++){
let [s,e]=targets[i];
if(s>=max){max=e; answer++;}
// console.log(" max",max,"ans",answer,s,e)
}
return answer;
}
처음 정렬을 할 때 start 기준으로 했더니 오류가 났는데
end 기준으로 했더니 다시 정답이 나왔다 ㅎㅎ .. 그리디알고리즘(탐욕법)공부를 하자 !!!
function solution(routes) {
var answer = 0;
var max = -30000;
routes.sort((a,b)=>a[1]-b[1]);
console.log(routes);
for(let i in routes){
if(routes[i][0]>max){
max=routes[i][1];
answer++;
}
}
return answer;
}