|
์ฝ๋ ์์ฑํ๊ธฐ
import java.util.*;
class Solution {
// ์ด N๋ง๋ฆฌ์ ํฐ์ผ๋ชฌ ์ค N/2 ๋ง๋ฆฌ๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์๋ค.
// N/2 ๋ง๋ฆฌ๋ฅผ ๊ณ ๋ฅด๋ ๊ณผ์ ์์ ๊ฐ์ฅ ๋ค์ํ ์ข
๋ฅ๋ก ๊ฐ์ ธ๊ฐ ์ ์๋ ์ต๋๊ฐ์ ๊ตฌํ๋ค.
// ์ค๋ณต ์ ๊ฑฐ๊ฐ ํ์ํ๋ค.
public int solution(int[] nums) {
int answer = 0;
Map<Integer, Integer> monsters = new HashMap<>();
// ๊ฐ์ ธ๊ฐ ์ ์๋ ํฐ์ผ๋ชฌ ์
int getable = nums.length / 2;
//๋งต์ ์ ์ฅํ๋ฉด์ ์ค๋ณต ์ ๊ฑฐ
for (int num : nums) {
monsters.put(num, 1);
}
// ํฐ์ผ๋ชฌ ์ข
๋ฅ์ ๊ฐ์
int species = monsters.size();
// ๊ฐ์ ธ๊ฐ ์ ์๋ ํฐ์ผ๋ชฌ ์ >= ํฐ์ผ๋ชฌ ์ข
๋ฅ ์ธ ๊ฒฝ์ฐ, ํฐ์ผ๋ชฌ ์ข
๋ฅ ๊ฐฏ์๊ฐ ์ต๋๊ฐ
if (getable >= species) {
answer = species;
// ๊ฐ์ ธ๊ฐ ์ ์๋ ํฐ์ผ๋ชฌ ์ < ํฐ์ผ๋ชฌ ์ข
๋ฅ ์ธ ๊ฒฝ์ฐ, ์ข
๋ฅ๊ฐ ์๋ฌด๋ฆฌ ๋ค์ํด๋ ๊ฐ์ ธ๊ฐ ์ ์๋ ๊ฐฏ์์ ํ๊ณ๊ฐ ์์
} else {
answer = getable;
}
return answer;
}
}
Java
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
๋จผ์ , Map ์ ํ์ฉํด์, ์กฐ๊ฑด๋ฌธ ์์ด ๋ฐ์ดํฐ๋ฅผ putํ๋ ๊ฒ ๋ง์ผ๋ก ํธํ๊ฒ ์ค๋ณต์ ๊ฑฐ๋ฅผ ํ ์ ์์๋ค.
์
๋ ฅ์ด ๋๋ ๋ค, Map์ size๊ฐ ํฐ์ผ๋ชฌ ์ข
๋ฅ๋ฅผ ์๋ฏธํ๊ธฐ ๋๋ฌธ์,
๊ฐ์ ธ๊ฐ ์ ์๋ ํฐ์ผ๋ชฌ ์ ์ ํฐ์ผ๋ชฌ ์ข
๋ฅ์ ๋์์ ๋ฐ๋ผ ์ ์ ํ ๋ต์ ์ป์ ์ ์๋๋ก ํ์๋ค.
์์)
[1 2 3 4 5 6] ํฐ์ผ๋ชฌ์ธ ๊ฒฝ์ฐ, ๊ฐ์ ธ๊ฐ ์ ์๋ ํฐ์ผ๋ชฌ์ 3๋ง๋ฆฌ,
(getable = 3 , species = 6) ์ด๋ฏ๋ก ๋ต์ 3
(getable โค species) โ getable
[1 1 1 2 2 2] ํฐ์ผ๋ชฌ์ธ ๊ฒฝ์ฐ, ๊ฐ์ ธ๊ฐ ์ ์๋ ํฐ์ผ๋ชฌ์ ์๋ 3๋ง๋ฆฌ
(getable = 3, species = 2) ์ด๋ฏ๋ก ๋ต์ 2
(getable โฅ species) โ species