Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Algorithm/Baekjoon

[python3] ์ด์ฝ”ํ…Œ - ๋ณผ๋ง๊ณต ๊ณ ๋ฅด๊ธฐ (ch.11 ๊ทธ๋ฆฌ๋”” - ์œ ํ˜•๋ณ„ ๊ธฐ์ถœ๋ฌธ์ œ)

๊ฐ์ž ๐Ÿฅ” 2021. 6. 23. 19:18
๋ฐ˜์‘ํ˜•

์ฐธ๊ณ ) ์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค 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)
๋ฐ˜์‘ํ˜•