https://school.programmers.co.kr/learn/courses/30/lessons/12935
슈도코드
겪은 문제
answer가 비어있을 때 [-1]을 반환하기 위해
if (answer === [])
answer = [-1]
이렇게 코드를 짰는데, (answer === [])가 항상 false값이 나오는 바람에 제대로 정답이 나오지 않았다.
구글링을 해본 결과, JavaScipt에서는 객체를 비교할 때, 내용을 보는 것이 아니라 메모리에서 동일한 객체를 가리키는 것인지 확인한다. 때문에 JavaScript에서 객체로 선언된 것들끼리 비교되었을 때, 절대로 동등할 수 없다.
console.log([] === []); // false
let a = ['abc'];
let b = ['abc'];
console.log(a === b); // false
b = a;
console.log(a === b); // true => b가 a와 같은 주소를 가리키기 때문에 true
결국, ‘answer가 비어있을 때’를 조건으로 사용하고 싶다면 다음와 같이 코드를 짜야 했다.
if (!answer[0]) // answer가 비어있다면 answer[0]의 값은 항상 false기 때문에 !answer[0]은 true
// 또는
if (answer.length === 0)
나의 답
function solution(arr) {
var answer = [];
let min = arr[0];
for(let i=0; i<arr.length; i++){
if (arr[i] < min)
min = arr[i];
}
for(let i=0; i<arr.length; i++){
if (arr[i] !== min)
answer.push(arr[i]);
}
if(!answer[0])
answer.push(-1);
return answer;
}
'알고리즘 문제' 카테고리의 다른 글
데일리 루틴 36번 - 문자열 다루기 기본 (0) | 2024.08.20 |
---|---|
데일리 루틴 35번 - 부족한 금액 계산하기 (0) | 2024.08.20 |