https://school.programmers.co.kr/learn/courses/30/lessons/178871
처음 작성한 코드 (시간초과)
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를 사용하는것은 비효율적이란 생각이 들었다.
그래서 단순하게 생각하니 문제가 풀렸다 ~.~ 몇시간이나 고민했네 ...
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 하노이의 탑 (0) | 2024.06.13 |
---|---|
[프로그래머스 PCCP 기출] 석유시추 js javascript (시간초과) (0) | 2024.05.31 |
[프로그래머스] 요격 시스템 / 단속 카메라 js javascript (0) | 2024.05.23 |
[프로그래머스] 도넛과 막대 그래프 js javascript (0) | 2024.05.22 |
[프로그래머스] PCCP 기출문제 1번 붕대 감기 js javascript (0) | 2024.05.17 |