๋ฌธ์ ) ๋น์ ์ ํฐ์ผ๋ชฌ์ ์ก๊ธฐ ์ํ ์ค๋ ์ฌํ ๋์, ํ ๋ฐ์ฌ๋์ ์ฐ๊ตฌ์ค์ ๋์ฐฉํ์ต๋๋ค. ํ ๋ฐ์ฌ๋์ ๋น์ ์๊ฒ ์์ ์ ์ฐ๊ตฌ์ค์ ์๋ ์ด N ๋ง๋ฆฌ์ ํฐ์ผ๋ชฌ ์ค์์ N/2๋ง๋ฆฌ๋ฅผ ๊ฐ์ ธ๊ฐ๋ ์ข๋ค๊ณ ํ์ต๋๋ค.
ํ ๋ฐ์ฌ๋ ์ฐ๊ตฌ์ค์ ํฐ์ผ๋ชฌ์ ์ข
๋ฅ์ ๋ฐ๋ผ ๋ฒํธ๋ฅผ ๋ถ์ฌ ๊ตฌ๋ถํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ ์ข
๋ฅ์ ํฐ์ผ๋ชฌ์ ๊ฐ์ ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฐ๊ตฌ์ค์ ์ด 4๋ง๋ฆฌ์ ํฐ์ผ๋ชฌ์ด ์๊ณ , ๊ฐ ํฐ์ผ๋ชฌ์ ์ข
๋ฅ ๋ฒํธ๊ฐ [3๋ฒ, 1๋ฒ, 2๋ฒ, 3๋ฒ]์ด๋ผ๋ฉด ์ด๋ 3๋ฒ ํฐ์ผ๋ชฌ ๋ ๋ง๋ฆฌ, 1๋ฒ ํฐ์ผ๋ชฌ ํ ๋ง๋ฆฌ, 2๋ฒ ํฐ์ผ๋ชฌ ํ ๋ง๋ฆฌ๊ฐ ์์์ ๋ํ๋
๋๋ค. ์ด๋, 4๋ง๋ฆฌ์ ํฐ์ผ๋ชฌ ์ค 2๋ง๋ฆฌ๋ฅผ ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด 6๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ฒซ ๋ฒ์งธ(3๋ฒ), ๋ ๋ฒ์งธ(1๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ์ฒซ ๋ฒ์งธ(3๋ฒ), ์ธ ๋ฒ์งธ(2๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ์ฒซ ๋ฒ์งธ(3๋ฒ), ๋ค ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ๋ ๋ฒ์งธ(1๋ฒ), ์ธ ๋ฒ์งธ(2๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ๋ ๋ฒ์งธ(1๋ฒ), ๋ค ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
- ์ธ ๋ฒ์งธ(2๋ฒ), ๋ค ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํ
์ด๋, ์ฒซ ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ๊ณผ ๋ค ๋ฒ์งธ(3๋ฒ) ํฐ์ผ๋ชฌ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ํ ์ข
๋ฅ(3๋ฒ ํฐ์ผ๋ชฌ ๋ ๋ง๋ฆฌ)์ ํฐ์ผ๋ชฌ๋ง ๊ฐ์ง ์ ์์ง๋ง, ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ค์ ๋ชจ๋ ๋ ์ข
๋ฅ์ ํฐ์ผ๋ชฌ์ ๊ฐ์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์์์์ ๊ฐ์ง ์ ์๋ ํฐ์ผ๋ชฌ ์ข
๋ฅ ์์ ์ต๋๊ฐ์ 2๊ฐ ๋ฉ๋๋ค.
๋น์ ์ ์ต๋ํ ๋ค์ํ ์ข
๋ฅ์ ํฐ์ผ๋ชฌ์ ๊ฐ์ง๊ธธ ์ํ๊ธฐ ๋๋ฌธ์, ์ต๋ํ ๋ง์ ์ข
๋ฅ์ ํฐ์ผ๋ชฌ์ ํฌํจํด์ N/2๋ง๋ฆฌ๋ฅผ ์ ํํ๋ ค ํฉ๋๋ค. N๋ง๋ฆฌ ํฐ์ผ๋ชฌ์ ์ข
๋ฅ ๋ฒํธ๊ฐ ๋ด๊ธด ๋ฐฐ์ด nums๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, N/2๋ง๋ฆฌ์ ํฐ์ผ๋ชฌ์ ์ ํํ๋ ๋ฐฉ๋ฒ ์ค, ๊ฐ์ฅ ๋ง์ ์ข
๋ฅ์ ํฐ์ผ๋ชฌ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์, ๊ทธ๋์ ํฐ์ผ๋ชฌ ์ข
๋ฅ ๋ฒํธ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ)
- nums๋ ํฐ์ผ๋ชฌ์ ์ข ๋ฅ ๋ฒํธ๊ฐ ๋ด๊ธด 1์ฐจ์ ๋ฐฐ์ด์ ๋๋ค.
- nums์ ๊ธธ์ด(N)๋ 1 ์ด์ 10,000 ์ดํ์ ์์ฐ์์ด๋ฉฐ, ํญ์ ์ง์๋ก ์ฃผ์ด์ง๋๋ค.
- ํฐ์ผ๋ชฌ์ ์ข ๋ฅ ๋ฒํธ๋ 1 ์ด์ 200,000 ์ดํ์ ์์ฐ์๋ก ๋ํ๋ ๋๋ค.
- ๊ฐ์ฅ ๋ง์ ์ข ๋ฅ์ ํฐ์ผ๋ชฌ์ ์ ํํ๋ ๋ฐฉ๋ฒ์ด ์ฌ๋ฌ ๊ฐ์ง์ธ ๊ฒฝ์ฐ์๋, ์ ํํ ์ ์๋ ํฐ์ผ๋ชฌ ์ข ๋ฅ ๊ฐ์์ ์ต๋๊ฐ ํ๋๋ง return ํ๋ฉด ๋ฉ๋๋ค.
*์ ์ถ๋ ฅ ์:
nums | result |
[3,1,2,3] | 2 |
[3,3,3,2,2,4] | 3 |
[3,3,3,2,2,2] | 2 |
๋ด ํ์ด
function solution(nums){
let answer = 0;
let selectNum = nums.length/2
let result = nums.reduce((acc,cur)=>{
if(acc[cur]){
acc[cur]++;
}else{
acc[cur] = 1;
}
return acc
},{})
if(Object.keys(result).length >= selectNum){
answer = selectNum;
}else {
answer = Object.keys(result).length;
}
return answer;
}
Description
์ด N๋ง๋ฆฌ ์ค ๊ฐ์ง๊ณ ๊ฐ ์ ์๋ ํฌ์ผ๋ชฌ์ ์๋ N/2๋ง๋ฆฌ(selectNum)์ด๊ณ , ์ข
๋ฅ์ ์๋ X(result)์ด๋ค.
๋ง์ฝ ๊ฐ์ง๊ณ ๊ฐ ์ ์๋ ํฌ์ผ๋ชฌ์ ์(selectNum)๊ฐ ์ข ๋ฅ์ ์(result)๋ณด๋ค ํฌ๋ฉด ๊ฐ์ฅ ๋ง์ ์ข ๋ฅ๋๋ก ํฌ์ผ๋ชฌ์ ๊ฐ์ง๊ณ ๊ฐ ์ ์๋ ์๋ '๊ฐ์ง๊ณ ๊ฐ ์ ์๋ ํฌ์ผ๋ชฌ์ ์(selectNum)'๊ฐ ๋๋ค. ๋ฐ๋๋ก ์ข ๋ฅ์ ์๊ฐ(result)๊ฐ ๋ ํฌ๋ฉด ๊ฐ์ฅ ๋ง์ ์ข ๋ฅ๋๋ก ํฌ์ผ๋ชฌ์ ๊ฐ์ง๊ณ ๊ฐ ์ ์๋ ์๋ '์ข ๋ฅ์ ์(result)'๊ฐ ๋๋ค.
๋ค๋ฅธ ๋ถ๋ค์ ํ์ด
function solution(nums) {
const noDuplicatePokemon = new Set(nums);
const pokemonVarietyCount = noDuplicatePokemon.size;
const pokemonCounts = nums.length;
return pokemonVarietyCount > pokemonCounts/2 ? pokemonCounts/2 : pokemonVarietyCount;
}
Review
๋๋ ์ด N๋ง๋ฆฌ์ ํฌ์ผ๋ชฌ ๋ฐฐ์ด(nums)์ reduceํจ์์ if๋ฌธ์ ํตํด ์ข ๋ฅ์ ์๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด๋ก ์ ๋ฆฌํ ํ, ๊ฐ์ฒด์ key๊ฐ๋ค(๊ฐ ์ข ๋ฅ)์ ๊ฐฏ์๋ก ํฌ์ผ๋ชฌ ์ข ๋ฅ์ ์๋ฅผ ๊ตฌํ๋ค. ๊ทผ๋ฐ ๋ค๋ฅธ ๋ถ์ ํ์ด๋ฅผ ๋ณด๋๊น new Set( )์ผ๋ก ๋ฐฐ์ด์ Set๊ฐ์ฒด๋ก ๋ง๋ค๊ณ size ์์ฑ์ ํตํด ํฌ์ผ๋ชฌ ์ข ๋ฅ์ ์(pokemonVarietyCount)๋ฅผ ๊ตฌํ๋ค. ์ด ๋ฐฉ๋ฒ์ด ๋ ๊ฐ๋จํ๊ฒ ์ข ๋ฅ์ ์๋ฅผ ๊ตฌํ ์ ์๋๊ฑฐ ๊ฐ์ ํ ์ ๋ฐฐ์ ๋ค~!! (โป์ฐธ๊ณ ๋ก size ์์ฑ์ set๊ฐ์ฒด์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๊ฑฐ ๊ฐ๋ค. ๊ธฐ์ตํ์! mdn๋ฐ๋ก๊ฐ๊ธฐ)
'๋ฌธ์ ํ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[javascript] ์คํฌ๋กค ์ ๋ฑ์ง ์๋ณด์ด๊ฒ ํ๋ ๋ฐฉ๋ฒ (0) | 2021.06.15 |
---|---|
[์๋ฐํฌ์ค๋ฆฝํธ ์ด๋ก ] ์ค์ฝํ (0) | 2021.06.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ด์ (0) | 2021.06.01 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2021.05.29 |
[Javascript] ๊ตฌ๊ตฌ๋จ ๊ตฌํ (0) | 2021.04.28 |