42576. ์์ฃผํ์ง ๋ชปํ ์ ์
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์์ฃผํ์ง ๋ชปํ ์ ์
๋ฌธ์ ์ ํ | ๋์ด๋ | ๊ฑธ๋ฆฐ ์๊ฐ | ํด๊ฒฐ ์ ๋ฌด(โ /โ) |
---|---|---|---|
ํด์ | lv.1 | 30๋ถ | โ |
#
์ค๊ณ ๋ฐฉ๋ฒJavaScript์ Map ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉ
๋๋ช ์ด์ธ์ด ๊ฐ๋ฅํ ์์ฃผ์ ์ด๋ฆ์ด ๋ด๊ธด ๋ฐฐ์ด์ ๋ณด๊ณ
์์ฃผ์ ์ด๋ฆ : ์ด๋ฆ์ด ๋์จ ํ์
์ ํด์ฌ ๋งต์ ๋ง๋ฌ์ฐธ๊ฐ์ ๋ฐฐ์ด์ ์ํํ๋ฉด์, ํด์ฌ ๋งต์ ์ฐธ๊ฐ์ ์ด๋ฆ์ด ์์ผ๋ฉด ์ด๋ฆ์ด ๋์จ ํ์๋ฅผํ๋์ฉ ์ค์
- ๋ง์ฝ ์ฐธ๊ฐ์ ์ด๋ฆ์ด ํด์ฌ๋งต์ ์๊ฑฐ๋ ์ด๋ฆ์ด ๋์จ ํ์๊ฐ 0 ์ด๋ผ๋ฉด ์ด ์ฌ๋์ด ์์ฃผํ์ง ๋ชปํ ์ฌ๋์ด๋ฏ๋ก ์ด ์ฌ๋์ ์ด๋ฆ์ ๋ฐํํจ
#
์ฝ๋function solution(participants, completions) { const personCountsByNames = new Map();
participants.forEach((name) => { personCountsByNames.set(name, (personCountsByNames.get(name) || 0) + 1); });
completions.forEach((name) => { personCountsByNames.set(name, (personCountsByNames.get(name) || 0) - 1); });
for (let [name, personCount] of personCountsByNames) { if (personCount === 1) { return name; } }}
#
์๊ฐ ๋ณต์ก๋O(n)
#
์ด๋ ค์ ๋ ์ JS์์ ํด์ฌ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ง, Map ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ง ๊ณ ๋ฏผํจ
์ฑ๋ฅ์ Map์ด ์ด์ ์ด ์๋ค๋ ๊ฒ์ ์๊ณ Map์ ์ฌ์ฉํ๊ธฐ๋ก ํจ
Map์ JS์ ๊ฐ์ฒด์๋ ๋ค๋ฅด๊ฒ get, set ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์กฐ์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ๋ฉด์์ ์กฐ๊ธ ๋จ์ด์ง๋ ๋ฏํจ.
๋ค๋ฅธ ์ฌ๋์ ํ ์ค ์ง๋ฆฌ ํ์ด๋ฅผ ๋ดค๋๋ฐ ์ดํดํ๊ธฐ ์ด๋ ค์ ์
var solution = (_, $) => _.find( (_) => !$[_]--, $.map((_) => ($[_] = ($[_] | 0) + 1)), );