개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (287) N
    • Web Front End (76) N
      • Javascript & Typescript (26)
      • React (12)
      • Vue (4)
      • Nodejs (1)
      • HTML (6)
      • CSS (8) N
      • 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/HackerRank

[HackerRank][Javascript] Sock Merchant

2020. 6. 7. 17:34
반응형

문제

Sock Merchant

문제 설명

짝이 맞는 양말의 개수를 구하는 문제

  • 처음에 문제를 반대로 이해해서 짝이 안 되는 나머지 숫자를 구하는 것으로 이해해 헤맸다.
  1. map으로 숫자마다 양말의 개수를 저장해 2로 나눠 몫만 더하면 답이 나온다.
  2. for문을 돌면서 map에 개수를 차곡차곡 더한다.
  3. 그리고 reduce를 사용해 양말이 짝지어지는 개수를 구해서 계속 더한 값을 구한다.

성공 코드

function sockMerchant(n, ar) {
  let map = new Map();

  for (let i = 0; i < n; i++) {
    // 분기처리 - if 문 사용
    if (!map.has(ar[i])) {
      map.set(ar[i], 1);
    } else {
      map.set(ar[i], map.get(ar[i]) + 1);
    }

    // 분기처리 - 삼항 연산자 사용
    map.has(ar[i]) ? map.set(ar[i], map.get(ar[i]) + 1) : map.set(ar[i], 1);
  }

  const reducer = (result, currentValue) => result + Math.floor(currentValue / 2);
  return [...map.values()].reduce(reducer, 0);
}
반응형
저작자표시 (새창열림)
    'Problem Solved/HackerRank' 카테고리의 다른 글
    • [HackerRank][Javscript] Counting Valleys
    • [HackerRank][Javascript] Jumping on the Clouds
    • [HackerRank] Day 9: Recursion 3(재귀3)
    • [HackerRank] [MySQL] Revising Aggregations - The Count Function
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바