728x90
반응형
https://leetcode.com/problems/contains-duplicate/
https://www.algodale.com/problems/contains-duplicate/
https://www.daleseo.com/js-sort-to-sorted/
https://www.daleseo.com/js-set/
문제
동일한 수가 있는지 체크
키 포인트
O(n^2) 보다 빠른 실행, 이중 for문 안됨 ==> (1)정렬후 비교 또는 (2)Set 사용
(1)정렬
sort() 함수 : (1)정렬하기 전에 배열 내의 값을 내부적으로 문자열로 변환하여 비교, (2)동일한 객체 반환
(1)
- 오름차순
[-3, 2, 0, 1, 3, -2, -1].sort((a, b) => a - b); // [-3, -2, -1, 0, 1, 2, 3] - 내림차순
[-3, 2, 0, 1, 3, -2, -1].sort((a, b) => b - a); // [3, 2, 1, 0, -1, -2, -3]
(2)
const nums = [3, 1, 2];
const sortedNums = nums.sort();
nums === sortedNums; // true
원본 배열을 건드리지 않아야하는 경우 2가지 방법 사용
- 배열을 먼저 복제한 후 정렬
const nums = [3, 1, 2]; const sortedNums = [...nums].sort(); - toSorted() 함수이용
const nums = [3, 1, 2]; const sortedNums = nums.toSorted();
(2)Set : 중복 제거
생성
const set = new Set(); // Set(0) {size: 0}
const numSet = new Set([1, 2, 3]); // Set(3) {1, 2, 3}
추가
add() 메서드 사용, 유일한 값만 저장
set.add(1); // Set(1) {1}
set.add("A"); // Set(2) {1, 'A'}
set.add(true); // Set(3) {1, 'A', true}
값을 추가한 후에 세트를 반환하기 때문에 연쇄적으로 호출 가능
set.add(1).add("A").add(true); // Set(3) {1, 'A', true}
삭제
값이 세트에 존재하여 성공적으로 삭제하였다면 true를 반환하고, 해당 값이 세트에 존재하지 않아서 삭제에 실패하였다면 false를 반환
set.delete(1); // true
set.delete(2); // false
확인
if (set.has("A")) {
console.log("A는 세트에 존재합니다."); // A는 세트에 존재합니다.
}
const result = set.has("B") ? "YES" : "NO"; // NO