๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/๐Ÿ’œSWEA

2817. ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ (D3 python)

by eyes from es 2023. 11. 18.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ  ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ

https://swexpertacademy.com/main/code/problem/problemDetail.do

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com

 

๐Ÿ’ก์ ‘๊ทผ ๋ฐฉ๋ฒ•

  • ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ, ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ -> 2๊ฐ€์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋กœ ๊ฐˆ๋ž˜๊ฐ€ ๋‚˜๋‰˜๊ณ ,
    • ๊ทธ ๊ฐˆ๋ž˜ ์ค‘์— K๊ฐ’๊ณผ ๊ฐ™์€ ๊ฐฏ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ
  • ์—ฌ๋Ÿฌ ๊ฐˆ๋ž˜๋กœ ๋ป—์–ด๋‚˜๊ฐ„๋‹ค -> dfs๋กœ ์ ‘๊ทผ ํ•ด๋ณด์ž!
    • ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ, ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ -> dfs ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ 2๋ฒˆ ํ˜ธ์ถœํ•ด์„œ ํ•˜๋‚˜๋Š” ํฌํ•จO, ํ•˜๋‚˜๋Š” ํฌํ•จX
  • sum์„ ์ „๋‹ฌํ•˜๋ฉด์„œ sum==K์ด๋ฉด 
    • count +=1 ํ•˜๊ณ , return

 

 

๐Ÿค”  return ์„ ์•ˆํ•˜๋ฉด?

return์„ ์•ˆ ํ•˜๋ฉด ๊ทธ ๊ฐˆ๋ž˜๊ฐ€ ๋๋‚˜์ง€ ์•Š๊ณ  ์ค‘๋ณต ๊ณ„์‚ฐ์ด ๋œ๋‹ค

 

์˜ˆ๋ฅผ ๋“ค์–ด data = [1,2,1,2] ์ด๊ณ  K=3์ผ๋•Œ

 

1,2,1,2

OO       : 1๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count ++

OOX     : 2๋ฒˆ์งธ ์ธ๋ฑ์Šค ์•ˆ ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++

OOXX   : 3๋ฒˆ์งธ ์ธ๋ฑ์Šค ์•ˆ ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++

OXXO   : 3๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++

 

XOO     :  2๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++

XOOX   :  3๋ฒˆ์งธ ์ธ๋ฑ์Šค ์•ˆ ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++

XXOO   :  3๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++

 

return๊ฐ’์„ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ๊ทธ ์ดํ›„์—๋„ ๊ณ„์† count++๊ฐ€ ๋˜์–ด์„œ ์ค‘๋ณต์ด ๋˜์–ด 7์ด ๋‚˜์˜จ๋‹ค

 

 

โœ…  return์„ ๋„ฃ์œผ๋ฉด

1,2,1,2

OO|       : 1๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count ++ return

OOX     : 2๋ฒˆ์งธ ์ธ๋ฑ์Šค ์•ˆ ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++

OOXX   : 3๋ฒˆ์งธ ์ธ๋ฑ์Šค ์•ˆ ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++

OXXO|   : 3๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++ return

 

XOO|     :  2๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++ return

XOOX   :  3๋ฒˆ์งธ ์ธ๋ฑ์Šค ์•ˆ ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++

XXOO|   :  3๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋”ํ•˜๊ณ  ๋‚œ ํ›„ count++ return

 

์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ 4๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

 

๐Ÿ’ก ํ’€์ด์ฝ”๋“œ

def dfs(index, sum = 0):
    global count

    if sum == K:
        count +=1
        return  #return ์„ ํ•˜๋ฉด ๊ทธ ์ดํ›„ data[index] ์•ˆ ๋”ํ•˜๊ณ  ์ด ๊ฐˆ๋ž˜๋Š” ๋๋‚จ

    if index == N:
        return

    dfs(index+1, sum + data[index]) #ํฌํ•จํ•œ ๊ฒฝ์šฐ
    dfs(index+1, sum) #ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

tc = int(input())

for i in range(tc):
    N, K = map(int, input().split())
    count = 0
    data = list(map(int,input().split()))
    dfs(0)
    print('#{} {}'.format(i+1, count))
728x90
๋ฐ˜์‘ํ˜•