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

MyungHyun님의 프로필 이미지
MyungHyun

작성한 질문수

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

3. 양팔저울(DFS)

시간복잡도 질문입니다

작성

·

197

0

def DFS(x, l, r):
if x == k:
if tmp[abs(l - r)] == 0:
tmp[abs(l - r)] = 1

else:
DFS(x + 1, l, r)
DFS(x + 1, l + a[x], r)
DFS(x + 1, l, r + a[x])


k = int(input())
a = list(map(int, input().split()))
tmp = [0] * (sum(a) + 1)
DFS(0, 0, 0)
count = 0
for x in tmp:
if x == 0:
count += 1
print(count)

 

저는 이런식으로 리스트 만들고 그 값에 해당하는 값을 1로 만들어서 푸는 방식으로 코드를 짰습니다.

채첨 프로그램으로는 100점이 나왔지만 list보다는 set를 사용하는게 시간복잡도상 좋다고 들었습니다

인터넷 검색해보니까 set 과 list 둘다 n번쨰에 element 할당이 O(1)었습니다

제코드랑 선생님의 코드랑 비교하면 set쪽이 더 빠를까요??

이런 문제를 풀떄는 list보다 set을 쓰는게 더 좋을까요??

답변 1

0

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

안녕하세요^^

list 나 set 이나 별 차이 없다고 생각합니다. 

MyungHyun님의 프로필 이미지
MyungHyun

작성한 질문수

질문하기