Tesseractjh
한 걸음씩
Tesseractjh
전체 방문자
오늘
어제
  • 전체 (293)
    • IT (30)
      • JavaScript (7)
      • TypeScript (5)
      • React (5)
      • Next.js (3)
      • MongoDB (2)
      • Webpack (2)
      • HTML & CSS (1)
      • Git (0)
      • AWS (1)
      • 기타 (4)
    • 연습장 (259)
      • 백준(BOJ) 문제풀이 (185)
      • 프로그래머스 문제풀이 (61)
      • LeetCode 문제풀이 (2)
      • HackerRank 문제풀이 (7)
      • 낙서장 (3)
      • 기타 (1)
    • 프로젝트 (3)
      • 지뢰피하기 (1)
      • 키릴-라틴 문자 변환기 (1)
      • Flex & Grid (1)
    • 멋쟁이사자처럼 프론트엔드 스쿨 1기 (1)
      • 일기 & 회고록 (1)

인기 글

티스토리

hELLO · Designed By 정상우.
Tesseractjh

한 걸음씩

[HackerRank - Easy] Beautiful Pairs - JavaScript
연습장/HackerRank 문제풀이

[HackerRank - Easy] Beautiful Pairs - JavaScript

2023. 1. 5. 17:20

🔗 문제 링크

https://www.hackerrank.com/challenges/beautiful-pairs/problem?isFullScreen=true 

 

Beautiful Pairs | HackerRank

Change an element of B and calculate the number of pairwise disjoint beautiful pairs.

www.hackerrank.com

✏️ 풀이

function beautifulPairs(A, B) {
    const getIntegers = (arr) => arr.reduce((acc, v) => {
        if (acc[v]) {
            acc[v]++;
        } else {
            acc[v] = 1;
        }
        return acc;
    }, {});
    
    const intA = getIntegers(A);
    const intB = getIntegers(B);
    const matchCount = Object.keys(intA).reduce((acc, int) => {
        if (intB[int]) {
            acc += Math.min(intA[int], intB[int]);
        }
        return acc;
    }, 0);
    
    return matchCount === A.length ? matchCount - 1 : matchCount + 1;
}

A, B 모두 각 정수가 몇 개씩 있는지를 객체로 만든다. 그 다음 intA의 keys, 즉 A에만 있는 정수 목록을 순회하면서 동일한 정수가 B에도 있다면 A와 B에 포함된 해당 정수의 개수 중 더 적은 쪽을 택하여 누적한다. 이렇게 하면 B의 요소 1개를 바꾸기 전의 pairwise disjoint beautiful pairs 개수를 구할 수 있다.

 

만약 이 pairs의 개수가 A, B의 길이와 같다면 B의 요소 1개를 바꿔서 pairs의 개수가 하나 줄어들게 되고, pairs의 개수가 A, B의 길이보다 적다면 B의 요소 1개를 바꿔서 하나의 pair를 더 만들 수 있게 되어 개수가 하나 늘어난다. 

저작자표시 비영리 (새창열림)

'연습장 > HackerRank 문제풀이' 카테고리의 다른 글

[HackerRank - Easy] Ice Cream Parlor - JavaScript  (0) 2023.01.05
[HackerRank - Easy] Weighted Uniform Strings - JavaScript  (0) 2023.01.03
[HackerRank - Easy] Two Characters - JavaScript  (0) 2023.01.03
[HackerRank - Easy] Super Reduced String - JavaScript  (0) 2023.01.03
[HackerRank - Easy] Flatland Space Stations - JavaScript  (0) 2023.01.01
    '연습장/HackerRank 문제풀이' 카테고리의 다른 글
    • [HackerRank - Easy] Ice Cream Parlor - JavaScript
    • [HackerRank - Easy] Weighted Uniform Strings - JavaScript
    • [HackerRank - Easy] Two Characters - JavaScript
    • [HackerRank - Easy] Super Reduced String - JavaScript
    Tesseractjh
    Tesseractjh
    바닐라 자바스크립트를 좋아하는 개발자입니다

    티스토리툴바