inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

4. 합이 같은 부분집합(DFS)

어디가 틀린건지 알 수 있을까요?

246

IJILKJ

작성한 질문수 68

0

강의를 보기전에 짜본 코드인데 어디가 잘못된지를 모르겠어서 질문드립니다.

전체적인 로직은 앞 강의에서 배운 부분집합 로직에서 조금 추가한 것으로

각 부분집합의 합을 구하고 구한 합을 cand_dic이란 딕셔너리의 key값으로 넣고 value는 만약 이미 그 합이 존재하면 1씩 더해서 나중에 cand_dic을 둘러보았을 때 value가 1보다 큰 값이 있다면 부분집합의 합이 겹치는거니까 yes를 출력하게 한 것입니다.

저 그리고 강의에서 sum=total-sum으로 진위여부를 판단하셨는데 문제를 보면 두 개의 부분집합으로 나뉜다고 나와있는데 그럼 예를들어서

{1,3,5,6,7,10}이 있을때 {1,3}  {5,6} 이렇게해도 두 개의 부분집합으로 나뉜거 아닌가요?? 그럼 sum=total-sum으로 판단을 하면 오류가 생기지 않나요?

제가 문제 이해를 잘못한건가요?

def dfs(cnt=1):
    if cnt == n+1:
        cand = 0
        for k, v in set_dic.items():
            if v == 1:
                cand += k
        cand_dic[cand] = cand_dic.get(cand, 0) + 1
    else:
        set_dic[set_list[cnt-1]] = 1
        dfs(cnt+1)
        set_dic[set_list[cnt-1]] = 0
        dfs(cnt+1)




n = int(input())
set_list = list(map(int, input().split()))
set_dic = {}
for i in set_list:
    set_dic[i] = 0
cand_dic = {}

dfs()

is_answer = False
for k, v in cand_dic.items():
    if v > 1:
        is_answer = True
        break

if is_answer:
    print('YES')
else:
    print('NO')

코테 준비 같이 해요! python

답변 1

0

김태원

정민님처럼 생각할 수 있겠네요. 문제가 의미전달이 미흡했던것 같습니다.

입력된 집합을 두개의 부분집합으로 나누라는 의미는 나뉜 두 부분집합을 다시 합치면  원래 집합이 된다는 의미로 했던 말입니다.

정민님처럼 생각할 수 도 있으니 문제를 좀더 자세하게 다음과 같이 수정해서 올려놓도록 하겠습니다.

"둘로 나뉘는 두 부분집합은 서로소 집합이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어야 합니다"

를 추가하도록 하겠습니다.

4번 데이터가 틀리게 나오는 것은 문제 해석의 차에 의해서 나온게 아닌가 싶습니다.

 

기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.

0

76

2

스택에서 ')'을 만나는 경우

0

78

3

문제가 어디있나요?

0

65

2

변수 or 함수명

0

61

1

침몰하는 타이타닉 문제 질문입니다

0

56

1

AA.py 책점 에러

0

57

1

오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.

0

111

2

5.동전분배하기 문제 밑에코드도 정답이될까요?

0

110

1

아나그램 비교 코드

0

116

2

AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.

0

160

2

문제 링크가있나여?

0

147

2

채점기 Time Limit Exceeded 오류 문의

1

163

2

동적계획법은 사용하는 문제

0

126

2

제 코드 좀 봐주세요

0

148

1

예외가 존재할 가능성?

0

97

1

3번이 안풀립니다

0

93

0

5번 틀림

0

114

0

오류원인?

0

98

0

리스트 선언

0

106

1

침몰하는 타이타닉(그리디) 문제 질문

0

109

1

알고리즘

0

69

1

코딩테스트

0

92

1

DFS 순서 질문드립니다.

0

126

2

left, right를 사용한 풀이법에 대한 질문입니다

0

91

1