์ฐธ๊ณ ) ์ด๊ฒ์ด ์ทจ์
์ ์ํ ์ฝ๋ฉํ
์คํธ๋ค with ํ์ด์ฌ ์ฑ
์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ๋ฌธ์ ์ ์ฝ๋์
๋๋ค.
๋ฐ๋ผ์ ๋ฌธ์ ๋ ์์ธํ๊ฒ ์ ์ง ์๊ณ , ๊ฐ๋จํ ์ค๋ช
๊ณผ ์ ์ฝ๋๋ง ์ฌ๋ฆฌ๊ฒ ์ต๋๋ค.
๋ณผ๋ง๊ณต ๊ณ ๋ฅด๊ธฐ (ebook ๊ธฐ์ค p.515)
- A.B ๋์ฌ๋ ๋ณผ๋ง์น๋ ์ค
- ์๋ก ๋ฌด๊ฒ๊ฐ ๋ค๋ฅธ ๋ณผ๋ง๊ณต์ ๊ณ ๋ฅด๋ ค๊ณ ํ๋ค.
- ๋ณผ๋ง๊ณต ๊ฐฏ์ N๊ฐ
- ๊ณต๋ง๋ค ๋ฌด๊ฒ๊ฐ ์ ํ์๊ณ , ๊ณต์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ ์์๋๋ก ๋ถ์ฌ๋จ.
- ๋ณผ๋ง๊ณต์ ๋ฌด๊ฒ๋ 1๋ถํฐ M ์ฌ์ด์ ์์ฐ์
- N์ด 5์ด๊ณ , M์ด 3์ด๋ฉด 1,3,2,3,2 ๋ฌด๊ฒ์ ๊ณต์ด ์กด์ฌ. ๊ฐ ๊ณต์ 1๋ฒ~5๋ฒ์ด๊ฒ์ง?
- ๋ ์ฌ๋์ด ๊ณ ๋ฅผ ์ ์๋ ๋ณผ๋ง๊ณต์ ๋ฒํธ ์กฐํฉ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ์์ค.
##### ์
๋ ฅ์กฐ๊ฑด
1. ์ฒซ์ฉ์ค N ๊ณผ M์ด ์ฃผ์ด์ง
2. 1 <= N <= 1000, 1<= M <= 10
3. ๋์ฉ์ค ๊ฐ ๊ณต์ ๋ฌด๊ฒ K (1 <= K <= M)
<1. ์ฒซ๋ฒ์งธ ์๋ - ๋์ ์ฝ๋ : ๋ง์ ์ฝ๋>
n, m = map(int, input().split())
ball_weight = list(map(int, input().split()))
import itertools
def solution(n, m, ball_weight):
count = 0
ABlist = list(itertools.product((ball_weight),repeat = 2))
for i in range(len(ABlist)):
x, y = ABlist[i]
if x != y:
count+=1
return count//2
solution(n, m, ball_weight)
<2. ์ ๋ต์ฝ๋ ๋ณด๊ณ ์์ ํด๋ณธ ์ฝ๋>
- ๋๋์
- ๋๋ ๊ทธ๋ฆฌ๋์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํ ๊ฒ๊ฐ๋ค.
- ์ฑ ์ ํ์ด๋ ํ๋๋ฅผ ์ ํํ๊ณ , ๊ทธ๊ฒ ์ต๊ณ (ํน์ ์ต์)๊ฐ ๋๋ ๊ฒ์ ์ฐพ์๋๊ฐ๋ ํ์์ ๋ฐฉ์์ผ๋ก ํธ๋ ๋ฐฉ๋ฉด์, ๋๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๊ฒฝ์ฐ์ ์๋, ํ์ํ๋ ๋๋์ผ๋ก ๋ฌธ์ ๋ฅผ ๊ตฌํํด๋๊ฐ๊ณ ์๋ค. ๊ทธ๋ฆฌ๋์ ๋ํ ์ฐ์ต์ด ๋ ํ์ํ ๊ฒ๊ฐ๋ค.
n, m = map(int, input().split())
ball = list(map(int, input().split()))
def solution(n,m, ball):
# n: ๊ณต์ ๊ฐ์ m: ๊ณต์ ๋ฌด๊ฒ๋ m์ดํ
# ํต์ฌ1: A/B๋ ๊ฐ์ ๋ฌด๊ฒ์ ๊ณต์ ์ฌ์ฉํ๋ฉด ์๋ผ
# ํต์ฌ2: ํ์ง๋ง ๊ฐ์ ๋ฌด๊ฒ์ ๊ณต์ผ์ง๋ผ๋ ๋ฒํธ๊ฐ ๋ฌ๋ผ์ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ก ์ทจ๊ธ
# 1. ๊ฐ์ ๋ฌด๊ฒ๊ฐ ๋ช๊ฐ ์ฉ ์กด์ฌํ๋์ง ํ์ธ
ball_count = [0] * (m+1) # ์ด์ฐจํผ ๋ฌด๊ฒm์ดํ์ ๊ณต๋ง ์กด์ฌ
for b in ball:
ball_count[b] += 1
result = 0
# 2. ๊ณต์ ์ ํํ ์ ์๋ ๊ฒฝ์ฐ์ ์ ๊ณ์ฐ
for i in range(1, m+1):
# i = ๋ฌด๊ฒ 1, ๋ฌด๊ฒ2.... A๊ฐ ์ ํํ๋ ๊ณต์ ๋ฌด๊ฒ๋ผ๊ณ ์น์.
# ball_count[1] ์ ๋ฌด๊ฒ1์ธ ๊ณต์ ์ ํํ๋ A์ ๊ฒฝ์ฐ์์
a = ball_count[i]
# ์ค๋ณต์ด ๋์ง ์๊ฒ ์์ ๊ณ์ฐํ ์๋ ์ญ์ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด n ๊ฐ์์ A๊ฐ ์ ํํ ๊ณต์ ๊ฐ์๋ฅผ ๋บ๋ค.
n -= a
# b ๊ฐ ๊ฐ์ง ์ ์๋ ๊ฒฝ์ฐ์ ์๋, a๊ฐ ๊ณต์ ๊ฐ์ ธ๊ฐ ๋๋จธ์ง n ๊ฐ์ง ์ด๋ค.
result += a*n
return result
solution(n, m, ball)