JavaScript

[JS] 코딩테스트 021 - new Set()

Irene1988 2025. 2. 16. 23:37
문제21 : set은 어떻게 만드나요? 다음 중 set을 만드는 방법으로 올바른 것을 모두 고르시오.

1) let x = {1, 2, 3, 5, 6, 7};
2) let x = {};
3) let x = new Set('javascript');
4) let x = new Set(range(5));
5) let x = new Set();

 

답) 3번, 5번

 


🔹 new Set()이란?

Set은 중복을 허용하지 않는 데이터 구조야. 즉, 같은 값을 여러 번 넣어도 한 번만 저장

const mySet = new Set([1, 2, 3, 3, 4, 4, 5]);
console.log(mySet); // Set(5) { 1, 2, 3, 4, 5 }

중복된 값이 자동으로 제거됨!


1️⃣ Set 기본 사용법

const numbers = new Set(); // 빈 Set 생성

numbers.add(1);
numbers.add(2);
numbers.add(2); // 중복 값 → 추가되지 않음
numbers.add(3);

console.log(numbers); // Set(3) { 1, 2, 3 }
console.log(numbers.size); // 3 (요소 개수)

👉 add(value)로 값을 추가하고, 중복 값은 자동으로 제거!


2️⃣ Set의 주요 메서드

메서드 설명 예제
add(value) 값을 추가 set.add(4);
delete(value) 특정 값을 제거 set.delete(2);
has(value) 값이 있는지 확인 set.has(1); // true
size 요소 개수 반환 set.size; // 3
clear() 모든 요소 제거 set.clear();
const mySet = new Set([1, 2, 3]);

console.log(mySet.has(2)); // true (값 존재 확인)
mySet.delete(2); // 2 삭제
console.log(mySet.has(2)); // false
console.log(mySet.size); // 2

👉 has(value)로 존재 여부 확인하고, delete(value)로 삭제 가능!


3️⃣ Set을 활용한 중복 제거

배열에서 중복을 쉽게 제거할 수 있어!

const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = [...new Set(numbers)];

console.log(uniqueNumbers); // [1, 2, 3, 4, 5]

👉 new Set(배열)을 쓰면 중복이 자동으로 제거됨!
👉 그리고 **전개 연산자(...)**를 사용해서 다시 배열로 변환하면 끝! 🚀


4️⃣ Set 순회 (forEach, for...of)

✅ forEach 사용

const mySet = new Set(["apple", "banana", "cherry"]);

mySet.forEach(value => {
  console.log(value);
});
// apple
// banana
// cherry

 

✅ for...of 사용

for (let item of mySet) {
  console.log(item);
}
// apple
// banana
// cherry

👉 배열처럼 반복문을 돌릴 수 있음!


5️⃣ Set을 Array로 변환

const mySet = new Set([10, 20, 30]);
const myArray = [...mySet];

console.log(myArray); // [10, 20, 30]

👉 Set → 배열 변환은 [...Set]


6️⃣ Set과 Array 비교

특징 Set Array
중복 허용 ❌ 안 됨 ✅ 됨
요소 개수 .size .length
순서 보장 ✅ 순서 유지됨 ✅ 유지됨
요소 제거 .delete(value) filter() / splice()

📌 중복을 허용하지 않는 데이터 저장이 필요하면 Set이 유리함!


7️⃣ Set 활용 예제

두 배열의 교집합 구하기

const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);

const intersection = [...setA].filter(num => setB.has(num));
console.log(intersection); // [3, 4]

👉 filter()와 has()를 사용해 공통 요소만 추출!

 

배열 중복 값 찾기

const arr = [1, 2, 2, 3, 4, 4, 5];
const duplicates = arr.filter((item, index) => arr.indexOf(item) !== index);

console.log([...new Set(duplicates)]); // [2, 4]

👉 중복된 값만 찾아내서 중복 없이 반환!


8️⃣ Set 정리

✅ new Set() → 중복을 허용하지 않는 컬렉션
✅ .add(value) → 값 추가
✅ .delete(value) → 값 삭제
✅ .has(value) → 값 존재 여부 확인
✅ new Set(배열) → 중복 제거 가능!
✅ [...set] → Set을 배열로 변환 가능!

 

 

 

* 위 포스팅은 챗GPT 답변을 토대로 작성되었습니다!