개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (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
  • 홈

인기 글

태그

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

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

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

개발후라이

Problem Solved/LeetCode

[LeetCode][javascript] 137번 문제 - Single Number II

2020. 3. 18. 20:12
반응형

문제

[LeetCode][javascript] 137번 문제 - Single Number II

문제 풀이

배열에서 1번만 등장하는 숫자를 찾아서 반환하는 문제이다.

내가 푼 코드

  1. 배열 숫자와 등장하는 횟수를 저장하기 위해 Map을 사용했다.
  2. key 값은 배열의 숫자, value 값은 숫자의 횟수를 저장한다.
  3. value가 3이 되면 map에서 삭제한다.
  4. 첫 번째 키를 반환한다.

다른 사람 코드

  1. 입력된 배열을 Set에 넣어 유니크한 값만 남게 하고, 이를 모두 합한다.
  2. 입력된 배열의 합을 구한다.
  3. 유니크한 값의 합에 3을 곱하면 모든 값이 3번씩 들었을 경우이다. 하지만 문제에서 그런 경우는 없다고 했으므로 여기에 배열합 값을 빼 주고 2를 나누면 원하는 1번 등장하는 배열값이 나오게 된다.
  • reduce를 필수로 쓸 수 있도록 연습해야겠다.

성공 코드

내가 푼 코드

const singleNumber = nums => {
  const countNums = new Map();

  nums.forEach(element => {
    if (!countNums.get(element)) {
      countNums.set(element, 1);
    } else {
      countNums.set(element, countNums.get(element) + 1);
    }

    if (countNums.get(element) === 3) countNums.delete(element);
  });

  return [...countNums.keys()][0];
};

다른 사람 코드

const singleNumber = nums => {
  const uniqueValuesSum = ([...new Set(nums)]).reduce((sum, elem) => sum + elem, 0);
  const allValuesSum = nums.reduce((sum, elem) => sum + elem, 0);
  return ( uniqueValuesSum  * 3 - allValuesSum ) / 2;
};
반응형
저작자표시 (새창열림)
    'Problem Solved/LeetCode' 카테고리의 다른 글
    • [LeetCode][javascript] 122번 - Best Time to Buy and Sell Stock II
    • [LeetCode][Javascirpt] 15번 - 3Sum
    • [LeetCode][javascript] 345번 문제 - Reverse Vowels of a String
    • [LeetCode][javascript] 344번 문제 - Reverse String
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바