โ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/1845
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฉ๋ชจ๋ฆฌ: 10.1 MB, ์๊ฐ: 0.73 ms
๋น์ ์ ํฐ์ผ๋ชฌ์ ์ก๊ธฐ ์ํ ์ค๋ ์ฌํ ๋์, ํ ๋ฐ์ฌ๋์ ์ฐ๊ตฌ์ค์ ๋์ฐฉํ์ต๋๋ค. ํ ๋ฐ์ฌ๋์ ๋น์ ์๊ฒ ์์ ์ ์ฐ๊ตฌ์ค์ ์๋ ์ด 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์ ๊ธธ์ด / 2 ๋ง๋ฆฌ๋ฅผ ๊ณ ๋ฅด๋, ๊ฐ์ฅ ๋ง์ ์ข ๋ฅ์ ํฐ์ผ๋ชฌ์ ์ ํํด์ผ ํ๋ค.
์ฐ์ ์ฃผ์ด์ง nums๊ฐ [ 1, 2, 3, 4, 5, 6]์ผ๋ก ํฐ์ผ๋ชฌ ์ข ๋ฅ๊ฐ ๋ชจ๋ ๋ค๋ฅด๋ค๋ฉด
[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 6], ..... , [3, 5, 6], [4, 5, 6]
์ด ๋ ์ ํํ ์ ์๋ ๊ฐ์ฅ ๋ง์ ์ข ๋ฅ๋ nums ๊ธธ์ด / 2๊ฐ ๋๋ค.
์ด๋ฒ์๋ ์ฃผ์ด์ง nums๊ฐ [ 2, 2, 3, 3, 3, 3 ] ์ผ๋ก ํฐ์ผ๋ชฌ ์ข ๋ฅ๊ฐ ์ค๋ณต๋๋ค๋ฉด
[2, 3], [3, 2], [2, 2], [3, 3]
์ผ๋ก ์ ํํ ์ ์๋ค. ์ด ๋ ์ ํํ ์ ์๋ ํฐ์ผ๋ชฌ ์ข ๋ฅ๋ 1๊ฐ์ 2๊ฐ๋ก ์ต๋ 2๊ฐ๊ฐ ๋๋ค. ์ด๊ฒ์ ์ค๋ณต๋ ๊ฒ์ ์ ๊ฑฐํ๊ณ ๋๋ฉด ๋จ์ ๊ฐ์์ ๊ฐ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ ํํ ์ ์๋ ํฐ์ผ๋ชฌ ์๋ N/2 ๋๋ ๋ฐฐ์ด์ ์๋ ํฐ์ผ๋ชฌ ์ข ๋ฅ์ ์๋ก ๋ ์ค ๋ ์์ ์๊ฐ ์ต๋๋ก ์ ํํ ์ ์๋ ์ข ๋ฅ์ ์๊ฐ ๋๋ค.
๐ป์ฝ๋
def solution(nums):
return min(len(nums)//2, len(set(nums)))
๐ํ๊ธฐ
์ด๋ฒ์ ๊ธฐ์กด์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋๋จธ์ค ๊ณ์ ์ ํํดํ๊ณ ๊ณ ๋์ ํคํธ๋ฅผ ๋ค์ ํ๊ณ ์๋ค.
์ด ๋ฌธ์ ๋ฅผ ์๋ฐ๋ก ์ฒ์ ์ ํ์ ๋๋ ํด์๋ผ๊ณ ํด์ ์ง์ง ํด์๋งต์ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์๋ฐ ์๊ณ ๋ณด๋ฉด ๊ตณ์ด ๊ผญ ๊ทธ๋ด ํ์๋ ์๋ ๊ฒ ๊ฐ๋ค.
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์์/Python - Lv.2 (0) | 2025.07.14 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ํ๋ฒํธ ๋ชฉ๋ก/Python - Lv.2 (0) | 2025.07.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฃผํ์ง ๋ชปํ ์ ์/Python - Lv.1 (2) | 2025.07.07 |
[SWEA] 1218. ๊ดํธ ์ง์ง๊ธฐ/Python - D4 (0) | 2025.07.05 |
[SWEA] 1226. ๋ฏธ๋ก1/Python - D4 (0) | 2025.07.04 |