a1603169 / pwa-nextjs-tailwindcss-blog

blog template with simple design
https://seunghun-website.vercel.app
1 stars 0 forks source link

blog/leetcode_three_numbers_sum #37

Open utterances-bot opened 6 months ago

utterances-bot commented 6 months ago

3 Sum 세 개의 합 0인 것 구하기

3 Sum 세 개의 합 0인 것 구하기

http://localhost:3000/blog/leetcode_three_numbers_sum

a1603169 commented 6 months ago

이중 배열을 정렬할 때는 배열의 각 요소(또는 행)가 다시 배열인 경우를 말합니다. 이러한 이중 배열을 정렬하는 방법은 배열의 각 내부 요소(배열)를 기준으로 정렬하는 것입니다. JavaScript에서 sort 함수를 사용하여 이중 배열을 여러 기준으로 정렬할 수 있습니다. 여기 몇 가지 일반적인 예시를 들어보겠습니다:

1. 첫 번째 요소를 기준으로 정렬

이중 배열의 각 내부 배열의 첫 번째 요소를 기준으로 정렬합니다.

let array = [[3, 4, 5], [1, 2, 3], [2, 3, 4]];
array.sort((a, b) => a[0] - b[0]);
console.log(array); // [[1, 2, 3], [2, 3, 4], [3, 4, 5]]

2. 두 번째 요소를 기준으로 정렬

이중 배열의 각 내부 배열의 두 번째 요소를 기준으로 정렬합니다.

let array = [[3, 4, 5], [1, 2, 3], [2, 3, 4]];
array.sort((a, b) => a[1] - b[1]);
console.log(array); // [[1, 2, 3], [2, 3, 4], [3, 4, 5]]

3. 복수의 기준으로 정렬

첫 번째 요소를 기준으로 정렬한 후, 첫 번째 요소가 같을 경우 두 번째 요소를 기준으로 정렬합니다.

let array = [[3, 1, 5], [3, 2, 3], [2, 3, 4]];
array.sort((a, b) => {
  if (a[0] === b[0]) {
    return a[1] - b[1];
  }
  return a[0] - b[0];
});
console.log(array); // [[2, 3, 4], [3, 1, 5], [3, 2, 3]]

4. 내림차순 정렬

이중 배열의 각 내부 배열의 첫 번째 요소를 기준으로 내림차순 정렬합니다.

let array = [[3, 4, 5], [1, 2, 3], [2, 3, 4]];
array.sort((a, b) => b[0] - a[0]);
console.log(array); // [[3, 4, 5], [2, 3, 4], [1, 2, 3]]

이러한 정렬 방법들은 sort 함수의 비교 함수(comparison function)를 적절히 정의함으로써, 다양한 기준에 따라 이중 배열을 정렬할 수 있게 합니다. 이 비교 함수는 두 요소 ab를 받아서, ab보다 작으면 음수, 같으면 0, 크면 양수를 반환합니다. 이 반환값을 통해 sort 함수는 배열의 순서를 결정합니다.

a1603169 commented 6 months ago

이중 배열에서 중복된 요소를 제거하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법 중 하나는 이중 배열을 문자열로 변환하여 Set을 사용하는 것입니다. 이 방법은 각 내부 배열을 문자열로 변환한 후, 이 문자열을 기반으로 중복을 제거합니다.

다음은 이중 배열에서 중복을 제거하는 JavaScript 코드 예시입니다:

let array = [[1, 2], [2, 3], [1, 2], [3, 4]];

// 배열의 각 요소를 문자열로 변환하여 Set을 사용해 중복 제거
let uniqueArray = Array.from(new Set(array.map(JSON.stringify))).map(JSON.parse);

console.log(uniqueArray); // 결과: [[1, 2], [2, 3], [3, 4]]

이 코드는 다음 단계를 거칩니다:

  1. array.map(JSON.stringify): 각 내부 배열을 JSON 문자열로 변환합니다.
  2. new Set(...): 문자열로 변환된 배열을 Set에 넣어 중복을 제거합니다.
  3. Array.from(...): Set을 다시 배열로 변환합니다.
  4. .map(JSON.parse): 각 문자열을 다시 배열로 변환합니다.

이 방법은 간단하고 직관적이지만, 크기가 큰 배열 또는 복잡한 데이터 구조에 대해서는 성능상의 고려가 필요할 수 있습니다. 또한, 이 방법은 내부 배열의 순서가 중요하며, 배열의 요소가 JSON으로 표현 가능한 데이터(예: 순환 참조가 없는 객체)여야 합니다.

a1603169 commented 6 months ago

Set 객체의 간단한 사용법도 있다

기본 배열에서 중복된 요소를 제거하는 가장 간단한 방법은 JavaScript의 Set 객체를 사용하는 것입니다. Set은 중복을 허용하지 않는 컬렉션이므로, 배열을 Set으로 변환한 후 다시 배열로 되돌리면 중복된 요소가 제거된 배열을 얻을 수 있습니다.

다음은 기본 배열에서 중복을 제거하는 간단한 예시입니다:

let array = [1, 2, 2, 3, 4, 4, 5];

// Set을 사용하여 중복 제거
let uniqueArray = [...new Set(array)];

console.log(uniqueArray); // 결과: [1, 2, 3, 4, 5]

이 코드에서 new Set(array)는 배열 array에서 중복된 요소를 제거하여 Set 객체를 생성합니다. 그 후, 스프레드 연산자 ...를 사용하여 Set 객체를 다시 배열로 변환합니다.

이 방법은 간결하고 효율적이며, 대부분의 경우에 적합합니다. 기본적인 데이터 타입(숫자, 문자열, 불리언 등)을 포함하는 배열에 특히 유용합니다.