개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (287)
    • Web Front End (76)
      • Javascript & Typescript (26)
      • React (12)
      • Vue (4)
      • Nodejs (1)
      • HTML (6)
      • CSS (8)
      • HTTP (6)
      • 책 - Review (8)
    • TIL (0)
    • Problem Solved (135)
      • 알고리즘 (4)
      • BOJ (67)
      • Programmers (8)
      • HackerRank (33)
      • LeetCode (23)
    • 회고 (4)
      • 오늘의 회고 (16)
      • 주간 회고 (15)
      • 월간 회고 (7)
      • WakaTime (9)
    • Git (3)
    • 기타 (15)
      • 취업 (5)
      • 자격증 (1)

블로그 메뉴

  • GitHub
  • LinkedIn
  • 홈

인기 글

태그

  • JavaScript
  • TypeScript
  • 노마드북클럽
  • 자바스크립트
  • 노개북
  • 릿코드
  • 프론트엔드
  • 오늘의회고
  • 개발자
  • 회고

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
개발후라이

개발후라이

Problem Solved/LeetCode

[LeetCode][Javascript] 136번 - Single Number

2020. 1. 27. 16:11
반응형

문제

[LeetCode][Javascript] 136번 - Single Number

문제 설명

배열에서 중복되지 않는 하나의 수를 찾는 문제

splice 사용

Set에 for문을 돌면서 중복값이 없는 수만 저장해도 되겠지만 문제에서는 기존 배열에서 처리하라는 말인 것 같아 쓰지 않았다.
숫자들을 정렬해 인덱스 뒤의 숫자부터 for문으로 중복되는 숫자들을 지워 나간다.
그러면 마지막에 남는 수가 중복되지 않은 하나의 수가 된다.

XOR 연산 사용

미쳤다 너무 간단하게 해결된다.
문제에서 중복되는 숫자가 있으면 2번 들어있으니 XOR로 배열의 모든 숫자를 계산한다.
XOR은 숫자를 2진수로 변환해 각 숫자가 같으면 0, 다르면 1로 나타내어지는 연산자이다.
즉, 같은 숫자를 비트 연산자로 계산하면 0이 된다는 것이다.
[4, 1, 2, 1, 2]와 같이 숫자가 정렬되어 있지 않아도 1+5+2-1-2와 1-1+2-2+5의 값이 같은 것처럼 결과는 언제나 4가 나올 것이다.
결국 마지막에는 중복되지 않은 값 하나만 나와서 답을 구하게 된다.

성공 코드

splice 사용

const singleNumber = nums => {
    nums.sort();
    console.log(nums)
    for (let i = nums.length - 2; i >= 0; i--) {
        if (nums[i] === nums[i + 1]) {
            nums.splice(i + 1, 1);
            nums.splice(i, 1);
        }
    }
    console.log(nums)

    return nums[0];
};

XOR 연산 사용

const singleNumber = nums => {
  return nums.reduce((sum, current) => (sum ^= current));
};
반응형
저작자표시 (새창열림)
    'Problem Solved/LeetCode' 카테고리의 다른 글
    • [LeetCode][javascript] 345번 문제 - Reverse Vowels of a String
    • [LeetCode][javascript] 344번 문제 - Reverse String
    • [LeetCode][Javascript] 202번 - Happy Number
    • [LeetCode][Javascript] 26. Remove Duplicates from Sorted Array
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바