Algorithm

[리트코드] contains-duplicate

깜냠미 2025. 11. 13. 02:03
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가지 방법 사용

  1. 배열을 먼저 복제한 후 정렬
    const nums = [3, 1, 2];
    const sortedNums = [...nums].sort();
  2. 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