ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [구름에듀] 환상의 조합
    알고리즘 문제풀이/Python 2020. 2. 8. 21:32

     

     

    문제

     

    # -*- coding: utf-8 -*-
    # UTF-8 encoding when using korean
    ns = input()
    ability = input()
    number = ns.split(' ')[0]
    result = ns.split(' ')[1] # 합
    arrAbility = ability.split(' ')

    cnt = 0
    sum = int(arrAbility[0])

    def choice(x, sum):
    global result
    global arrAbility
    if(x < len(arrAbility)):
    choice(x + 1, sum + int(arrAbility[x]))
    choice(x + 1, sum)
    else :
    if(sum ==  int(result)) :
    global cnt
    cnt += 1

    choice(1,sum)


    print (cnt)
    # 처음은 무조건 포함
    # 이후 두 번째 부터는 선택과 비선택의 경우로 나누고, 마지막에 다 더했을 때의 값이 같은 경우 cnt++


    해설

     

    # -*- coding: utf-8 -*-
    # UTF-8 encoding when using korean
    ns = input()
    ability = input()
    number = ns.split(' ')[0]
    result = ns.split(' ')[1] # 합
    arrAbility = ability.split(' ')
    
    cnt = 0
    sum = int(arrAbility[0])
    
    def choice(x, sum):
    	global result
    	global arrAbility
    	if(x < len(arrAbility)):
    		choice(x + 1, sum + int(arrAbility[x]))
    		choice(x + 1, sum)
    	else :
    		if(sum ==  int(result)) :
    			global cnt
    			cnt += 1
    			
    choice(1,sum)
    
    
    print (cnt)
    # 처음은 무조건 포함
    # 이후 두 번째 부터는 선택과 비선택의 경우로 나누고, 마지막에 다 더했을 때의 값이 같은 경우 cnt++

     

     

    느낀 점

    • 재귀를 통해 쉽게 해결가능한 문제였다.

     

     

    댓글

Designed by Tistory.