728x90
테스트케이스 최대 소요시간 : 140.70ms
죽어도 시간초과를 해결 못해서 다른 사람 답을 찾아보고 참고했다.
맨 아래엔 후기.....
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/178871
제출답안
function solution(players, callings) {
// player들의 현재위치를 map으로 변환
let positions = {};
players.forEach((player, index)=> positions[player]=index )
callings.forEach((call)=>{
let callerP = positions[call]; //호명자의 원래 위치
let loser = players[callerP-1]; // 순위를 뺏긴 사람
players[callerP] = loser; // 순위를 뺏긴 사람을 호명자의 자리에 넣음
players[callerP-1] = call; //호명자 앞자리는 호명자로 대체
// positions갱신
positions[call] = callerP-1;
positions[loser] = callerP;
})
return players;
}
배열.indexOf("문자열") 이 찾을 때까지 문자열을 돌기 때문에 오래 걸린다는건 대충 눈치챘지만
이걸 map으로 바꿔서 검색 시간을 단축한다는 건 의외였다.
players를 여러번 순회하지 않고 처음 한번만 순회한뒤 작업을 끝내는 생각을 어떻게 했을까.
갈길이 먼 것 같다..
728x90
'코테' 카테고리의 다른 글
[JS] 가장 많이 받은 선물_충격적인 얕은 복사 (0) | 2024.03.12 |
---|---|
[JS] 가장 가까운 같은 글자 (0) | 2024.03.10 |
[JS] 삼총사 (프로그래머스) (0) | 2024.03.08 |
[JS] 푸드 파이트 대회 (0) | 2024.03.07 |
[JS] 붕대감기 (해설포함) (1) | 2024.03.01 |
댓글