반응형
1. 문제
- 배열 arr이 주어질 때, i와 j에 대해 조건을 만족하는지 여부를 반환하라.
2. 해결
function checkIfExist(arr: number[]): boolean {
for(let i = 0; i< arr.length; i++) {
for(let j = 0; j < arr.length; j++) {
if(i === j) continue;
if(arr[i] === 2 * arr[j]) return true;
}
}
return false;
};
- 조건에 맞게 구현하면 된다.
function checkIfExist(arr: number[]): boolean {
const values = new Set<number>();
for (let i=0; i < arr.length; i++) {
const num = arr[i];
//there is a number wich has his value * 2
if (values.has(num * 2)) return true;
//the current value * 2 has a match. So we didn't need to check in another loop.
if (values.has(num / 2)) return true;
values.add(num);
};
return false;
};
- 이건 다른 사람 풀이인데, 중복을 없애는 Set에 집어 넣고, O(n) 시간에 조건을 판별할 수 있더라.