https://school.programmers.co.kr/learn/courses/30/lessons/17680#
프로그래머스 위의 문제를 풀던중 오류를 찾던중에 잘못알고있던점을 알게 되었다.
let arr = [1, 2, 3];
function modifyArray(arr) {
arr.push(4);
}
modifyArray(arr);
console.log(arr); // [1, 2, 3, 4]
function newArray(arr) {
arr = [5, 6, 7];
}
newArray(arr);
console.log(arr); // [1, 2, 3, 4]
함수안에서 해당 변수에 새로운 배열
이 할당이 되더라도 호출한곳의 배열변수는 원래의 주소값을 계속 가리키고 있기 때문에 배열이 변하지 않는것이다.function solution(cacheSize, cities) {
// ["a", "b", "c", "a", "b", "d", "c"]
// a b c
// b c a
// c a b
// a b d
// b d c
if(cacheSize === 0)
return cities.length * 5;
let runtime = 0;
let arr = []
for(let i = 0; i <cities.length; i++){
cities[i] = cities[i].toLowerCase();
runtime += searchIndex(arr,cities[i],cacheSize);
console.log(arr);
}
return runtime;
}
function searchIndex(arr, word, cacheSize){
let index = arr.indexOf(word);
if(index === -1){
if(cacheSize === arr.length){
arr.shift();
arr.push(word);
}
else arr.push(word);
return 5;
}
else {
_switch(arr, index);
return 1;
};
}
function _switch(arr, a){
arr = [...arr.slice(0,a),...arr.slice(a+1), arr[a]];
}
function _switch(arr, a){
let temp = arr[a];
arr.splice(a,1);
arr.push(temp);
}