강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

깨끗한 장어님의 프로필 이미지
깨끗한 장어

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

합이 같은 부분집합 질문입니다.

작성

·

158

0

안녕하세요.

항상 답변해주셔서 감사합니다.

이번엔 합이 같은 부분집합 문제 질문입니다.

테스트5개 중 4번이 틀렸다고 나오는데요,

코드가 어디서 이상이 있는지 잘 모르겠습니다.

import sys

from collections import deque

import heapq as hq

#sys.stdin= open("input.txt","r")

def DFS(v):

    if v>=7:

        if sum(llist)==sum(rlist):

            print("YES")

        return

    else:

        llist.append(alist[v-1])

        DFS(v+1)

        rlist.append(alist[v-1])

        DFS(v+1)

if __name__ == '__main__':

    answer = "NO"

    llist = []

    rlist = []

    n = int(input())

    alist = list(map(int, input().split()))

    #print(alist)

    DFS(1)

v가 7 이상인경우 테스트 확인을 진행했습니다.

만약 Yes가 안나올 경우 NO로 고정시켰습니다.

문제점발견해주시면 감사합니다.

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

위 코드를 

3

1  2  5

입력을 가지고 집합이 완성됬을 때 아래 코드처럼 출력해보니

import sys

from collections import deque

import heapq as hq

sys.stdin= open("input.txt","r")

def DFS(v):

    if v>3:
        for x in llist:
            print(x, end=' ')
        print()
        for y in rlist:
            print(y, end=' ')
        print()

        if sum(llist)==sum(rlist):

            print("YES")

        return

    else:

        llist.append(alist[v-1])

        DFS(v+1)

        rlist.append(alist[v-1])

        DFS(v+1)

if __name__ == '__main__':

    answer = "NO"

    llist = []

    rlist = []

    n = int(input())

    alist = list(map(int, input().split()))

    #print(alist)

    DFS(1)

llist와 rlist 리스트에 원소를 넣었다 뺏다 해야 하는데 계속 누적되고 있습니다. 

깨끗한 장어님의 프로필 이미지
깨끗한 장어

작성한 질문수

질문하기