📒 목차

📌 객체의 키와 밸류 삭제하기 delete
📌 오름차순 & 내림차순 sort()
📌 배열의 중복값 제거하기 set()

📌 객체의 키와 밸류 삭제하기

나는 알고리즘 문제를 풀 때, 정해져있는 변수에 값을 넣어야 하는 상황이라면 객체를 활용하여 키값으로 변수를 넣어주고, 값들을 조건에 맞춰 객체의 밸류 값으로 넣어 문제를 푸는 것을 좋아한다.

오늘 풀어던 알고리즘 문제 중 '멘토링'이라는 문제는 N번의 시험이 이루어지는 데, 각 시험별로 학생들의 순위가 배열로 주어진다.

멘토와 멘티를 짝지어 주어야 하는데 멘토는 N번의 시험 보두 멘티보다 등수가 높아야만 멘토를 할 수 있다. 따라서 객체를 활용하여 짝지어지는 상황을 저장하고 조건에 미달하는 경우, 객체 안의 키와 밸류를 삭제하는 과정이 필요했다.

평소에 배열보다는 객체를 많이 다뤄보지 못해 생각지 못했지만 객체 안의 키와 밸류를 삭제해야 할 때, 어떻게 해야하는지 궁금증이 생겼다.

그때, 찾은 것이 delete연산자이다.

delete 연산자란?

객체 안의 여러 데이터 중 원하는 데이터를 삭제할 때 사용하는 연산자이다!!

delete 연산자의 구조

delete 객체명[키값]

delete 객체명.키값

delete 연산자의 예시

let obj = {
  a : '가',
  b : '나',
  c : '다'
}

delete obj.a
console.log(obj) // { b: '나', c: '다' }
delete obj['b']
console.log(obj) // { c: '다' }

📌 배열의 오름차순 & 내림차순 / sort()

알고리즘 문제를 풀며 배열에서 오름차순과 내림차순을 만드는 것은 정말 빈번하게 마주치는 상황이다. 그동안 오름차순 또는 내림차순을 만들어야 할 때, sort() 메서드를 사용하여 풀이를 해왔다. 하지만 사실, 어떻게 배열의 값들이 오름차순 또는 내림차순으로 정렬되는지 잘알지 못하고 그냥 암기하여 문제를 풀었다. 따라서, 오늘은 어떻게 sort()메서드가 동작하는지에 대해 공부해보는 시간을 가져보려 한다.

sort()란?

sort()는 배열의 요소를 정렬하는데 사용되는 메서드이다.

sort()의 특징

  1. sort() 메서드는 기본적으로 배열의 요소를 문자열 형태로 정렬한다.
  2. sort() 메서드는 원본 배열을 변경하며, 정렬된 배열을 반환한다.
  3. sort() 메서드는 숫자 정렬 뿐만 아니라 문자열 정렬에서도 사용할 수 있다. 여기서 문자열 정렬 순서는 유니코드 포인트 값을 기준으로 정렬된다.

sort()의 구조

배열명.sort([compareFunction])

sort()의 예시

✏️ 내림차순

아래의 내림차순 sort() 메서드를 보게 되면 'b-a'는 'b'에서 'a'를 뺀 결과를 반환하는 표현식이다.
'b-a'가 0보다 작으면 'b'는 'a'보다 앞에 위치한다. (b < a)
'b-a'가 0보다 크면 'b'는 'a'보다 뒤에 위치한다. (b > a)
'b-a'가 0이면 'a'와 'b'의 순서는 유지된다. (a = b)

let arr = [2, 4, 6, 8, 14, 9];

arr.sort((a, b) => b - a); // [ 14, 9, 8, 6, 4, 2 ]

✏️ 오름차순

아래의 오름차순 sort() 메서드를 보게 되면 'a-b'는 'a'에서 'b'를 뺀 결과를 반환하는 표현식이다.
'a-b'가 0보다 작으면 'a'는 'b'보다 앞에 위치한다. (a < b)
'a-b'가 0보다 크면 'a'는 'b'보다 뒤에 위치한다. (a > b)
'a-b'가 0이면 'a'와 'b'의 순서는 유지된다. (a = b)

let arr = [2, 4, 6, 8, 14, 9];

arr.sort((a, b) => a - b); // [ 2, 4, 6, 8, 9, 14 ] 

📌 배열의 중복값 제거하기 / set()

가끔 알고리즘 문제를 풀다보면 배열의 값들이 중복되었을 때, 중복된 값을 제거해야하는 경우가 생긴다.

그동안 set() 메서드를 알지 못했을 때는 for문을 사용하여 반복문을 돌려 중복된 값을 찾고 새로운 배열을 중복된 값을 제거한 배열을 새로 만드는 방식으로 문제를 풀었다.

하지만, set() 메서드를 안다면 이러한 번거로운 과정없이 손쉽게 중복값을 제거할 수 있다.

set()이란?

고유한 값을 저장하는 객체이며, 중복을 허용하지 않고 순서를 유지한다.

set()의 특징

  1. 고유한 값만 포함하기 때문에 중복된 값을 허용하지 않는다.
  2. 순서를 유지하기 때문에 set() 메서드에 값을 추가한 순서대로 요소를 저장한다.

set()의 구조

const 변수명 = new Set();
// const set = new Set();

set()의 구조

  • add(value): Set에 값을 추가한다.
  • delete(value): Set에서 값을 제거한다.
  • has(value): Set에 값이 있는지 확인한다.
  • clear(): Set의 모든 값을 제거한다.
  • size: Set에 저장된 요소의 개수를 반환한다.

set()의 예시

const set = new Set();

set.add(1);
set.add(2);
set.add(3);
set.add(1); // 중복된 값은 무시된다

console.log(set)

console.log(set.size); // 3

console.log(set.has(2)); // true

set.delete(3);

console.log(set.size); // 2

set.clear();

console.log(set.size); // 0

🌈 오늘 하루

오늘도 알고리즘을 풀며 새로운 메서드를 학습해보는 기회가 되었다. 일부 메소드는 사용법만 알고 어떻게 그러한 결과를 반환하는 것인지 몰랐던 메소드도 있었고, 일부 메서드는 처음 접해보는 내용이었다. 아는만큼 힘이 되는 것 같다. 예를들어 set()메서드를 모른다면 배열에서 중복값을 없앨 때, 반복문을 통해 일일히 판별해야 하지만 set()메서드를 안다면 바로 결과를 가져올 수 있다. 그래서 요즘 알고리즘 공부가 즐겁다. 돌아가는 방법, 지름길로 가는 방법 모두 배워나가는 과정이 흥미롭다.

0개의 댓글