๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[Java] - (Level2)ํฐ์ผ“๋ชฌ

by ์ฃผ๋ฐœ2 2020. 3. 13.
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/1845?language=java

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

์ฝ”๋“œ

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์˜ ๊ฒฝ์šฐ) ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํฐ์ผ“๋ชฌ์˜ ์ˆ˜๊ฐ€ ์ •๋‹ต์ด๋‹ค.

 

 

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€