https://programmers.co.kr/learn/courses/30/lessons/1845?language=java
์ฝ๋
import java.util.*;
class Solution {
public int solution(int[] nums) {
int answer = 0;
List<Integer> list = new ArrayList<Integer>();
list.add(nums[0]);
// nums[] ๋ฐฐ์ด์ ์ค๋ณต์ ๊ฑฐ
for(int i=1; i<nums.length; i++)
if(!list.contains(nums[i]))
list.add(nums[i]);
/* list.size(): ํฌ์ผ๋ชฌ์ ์ข
๋ฅ, nums.length: ๊ฐ์ง ์ ์๋ ํฌ์ผ๋ชฌ์ ์ */
answer = (list.size() < nums.length/2) ? list.size() : nums.length/2;
return answer;
}
}
ํ์ด
๋ฌธ์ ๋ ๊ธธ์ง๋ง ์ฝ์ด๋ณด๋ ๋จ์ํ๋ค.
์ฃผ์ด์ง ํฌ์ผ๋ชฌ์ ๋ฐฐ์ด nums ์์ ์ค๋ณต์ ์ ๊ฑฐํ๋ฉด ๋ ๊ฒ ๊ฐ์๊ณ , ์ค๋ณต์ ์ ๊ฑฐํ ํ ๋จ์ ํฐ์ผ๋ชฌ์ ์ข ๋ฅ ์๋ฅผ ๋น๊ตํด์ฃผ๋ฉด ๋ ๊ฒ ๊ฐ์๋ค.
nums๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ฃผ์ด์ง๋ค๊ณ ์๊ฐํด๋ณด์. ๊ฐ์ง ์ ์๋ ํฐ์ผ๋ชฌ์ ์๋ 3๋ง๋ฆฌ์ด๋ค.
1) nums = [1, 1, 1, 1, 2, 2]
2) nums = [1, 1, 1, 1, 1, 1]
3) nums = [1, 2, 3, 4, 5, 6]
4) nums = [1, 1, 2, 2, 3, 3]
1)์ ๊ฒฝ์ฐ, ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ๋๋ฉด [1,2] ๊ฐ ๋จ๋๋ค. ์ต๋ํ์ ์ข ๋ฅ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ฏ๋ก ์ค๋ณต์ ์ ๊ฑฐํ ํ ๋ชจ๋ ๊ฐ์ ธ๋ 2๋ง๋ฆฌ์ด๋ค. ๋ฐ๋ผ์ ๊ฐ์ง ์ ์๋ ์ข ๋ฅ๋ ๋๊ฐ์ง
2)์ ๊ฒฝ์ฐ, ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ๋๋ฉด [1] ์ด ๋จ๋๋ค. -> ๊ฐ์ง ์ ์๋ ์ข ๋ฅ๋ ํ๊ฐ์ง
3)์ ๊ฒฝ์ฐ, ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ๋๋ฉด [1, 2, 3, 4, 5, 6] ์ด ๋จ๋๋ค. -> ๊ฐ์ง ์ ์๋ ํฐ์ผ๋ชฌ์ ์๋ 3๋ง๋ฆฌ์ด๋ฏ๋ก, ์ข ๋ฅ๋ ์ธ๊ฐ์ง
4)์ ๊ฒฝ์ฐ, ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ๋๋ฉด [1, 2, 3] ์ด ๋จ๋๋ค. -> ๊ฐ์ง ์ ์๋ ํฐ์ผ๋ชฌ์ ์์ ์ข ๋ฅ๊ฐ ๋์ผํ๊ฒ ์ธ๊ฐ์ง ์ด๋ค.
๋ฐ๋ผ์ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ๋จ์ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๊ตํ๊ธฐ ์ํด ArrayList๋ก ์ ์ธํ๊ณ ,
๋ง์ฝ ๋จ์ ํฐ์ผ๋ชฌ์ ์ฌ์ด์ฆ๊ฐ ๊ฐ์ง ์ ์๋ ํฐ์ผ๋ชฌ์ ์๋ณด๋ค ์์ผ๋ฉด -> (1, 2์ ๊ฒฝ์ฐ) ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ์ ๋ต์ด๊ณ ,
๊ทธ ๋ฐ๋์ด๋ฉด -> (3, 4์ ๊ฒฝ์ฐ) ๊ฐ์ง ์ ์๋ ํฐ์ผ๋ชฌ์ ์๊ฐ ์ ๋ต์ด๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์ต์๊ฐ ๋ง๋ค๊ธฐ (0) | 2020.03.13 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)N๊ฐ์ ์ต์๊ณต๋ฐฐ์ (0) | 2020.03.13 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)๋ค์ ํฐ ์ซ์ (0) | 2020.03.13 |
[Codeforces] 721A: One-dimensional Japanese Crossword (0) | 2020.03.13 |
[๋ฐฑ์ค] 1057๋ฒ: ํ ๋๋จผํธ(๊ตฌํ, ์ํ) (0) | 2020.03.12 |
๋๊ธ