Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blog/leetcode_three_numbers_sum #37

Open
utterances-bot opened this issue Jan 12, 2024 · 3 comments
Open

blog/leetcode_three_numbers_sum #37

utterances-bot opened this issue Jan 12, 2024 · 3 comments

Comments

@utterances-bot
Copy link

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

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

http://localhost:3000/blog/leetcode_three_numbers_sum

Copy link
Owner

이중 배열을 정렬할 때는 배열의 각 요소(또는 행)가 다시 배열인 경우를 말합니다. 이러한 이중 배열을 정렬하는 방법은 배열의 각 내부 요소(배열)를 기준으로 정렬하는 것입니다. 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 함수는 배열의 순서를 결정합니다.

Copy link
Owner

이중 배열에서 중복된 요소를 제거하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법 중 하나는 이중 배열을 문자열로 변환하여 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으로 표현 가능한 데이터(예: 순환 참조가 없는 객체)여야 합니다.

Copy link
Owner

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 객체를 다시 배열로 변환합니다.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants