๋ฌธ์ ๋งํฌ
https://leetcode.com/problems/number-of-equivalent-domino-pairs/description/
ํ์ด
์ฒ์ ํผ ๋ฐฉ์์ด๋ค. ์ด๋ ต์ง ์๊ฒ ํ ์ ์์์ผ๋ฉฐ ์์ ๋ณต์ก๋๋ O(n) ์ด๋ค. ์ง๊ธ ์๊ฐํด๋ณด๋ฉด ๊ตณ์ด arr.sort()๋ฅผ ํตํด ์ ๋ ฌํ๋ค join์ผ๋ก ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ ๋ค ๋ค์ ์ฐ์ฐ์ ํ ๊ฒ ์๋๊ณ ์ฒ์ arr๋ฅผ ์ํํ๋ฉด์ ๋ชจ๋ ์ฐ์ฐ์ ์ฒ๋ฆฌํ ์ ์์๋ค. ์ด๋ฐ ๊ฐ์ ์ ๋ค์ด ๋ณด์ฌ ํ๋ฒ ๋ ์ ๋ฆฌ๋ฅผ ํ๋ค. (ํ๋จ 2๋ฒ์งธ ์ฝ๋ ํ์ธ)
/**
* @param {number[][]} dominoes
* @return {number}
*/
var numEquivDominoPairs = function (dominoes) {
dominoes = dominoes.map((arr) => {
const key = arr.sort((prev, next) => prev - next).join("");
return key;
});
let map = new Map();
for (const key of dominoes) {
map.set(key, (map.get(key) || 0) + 1);
}
let pairs = 0;
map.values().forEach((n) => {
pairs += n * (n - 1) * 0.5;
});
return pairs;
};
๋๋ฒ์งธ๋ก ํผ ๋ฐฉ์์ด๋ค. ์ฐ์ฐ์ด ๋์ฑ ๊ฐ๊ฒฐํด์ก๋ค.
/**
* @param {number[][]} dominoes
* @return {number}
*/
var numEquivDominoPairs = function (dominoes) {
let map = new Map();
let pairs = 0;
for (const [n1, n2] of dominoes) {
let key = ''+Math.max(n1, n2) + Math.min(n1, n2);
map.set(key, (map.get(key) || 0) + 1);
pairs += map.get(key) - 1;
}
return pairs;
};
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode[JS] > 1913. Maximum Product Difference Between Two Pairs (0) | 2025.04.09 |
---|---|
LeetCode [JS] > 1496. Path Crossing (0) | 2025.04.08 |
LeetCode [JS] > 859. Buddy strings (0) | 2025.04.05 |
LeetCode [JS] > 2780. Minimum Index of a Valid Split (0) | 2025.04.05 |
LeetCode > 2208 Minimum Operations to Halve Array Sum (0) | 2025.04.05 |