내 풀이. dfs 조합으로 무식하게 풀었다.
import sys
input = sys.stdin.readline
def dfs(s,cnt):
global ans
if cnt==3:
ans += 1
return
if cnt > 3:
return
for next in range(s+1,N+1):
if not eat[next] and next not in donot_list:
eat[next] = True
for hate in ice_cream[next]:
donot_list.append(hate)
dfs(next, cnt + 1)
eat[next] = False
for hate in ice_cream[next]:
donot_list.pop()
N, M = map(int, input().split())
ice_cream = {i: [] for i in range(1,N+1)}
eat = {i: False for i in range(1,N+1)}
donot_list = []
ice_cream[0] = []
for _ in range(M):
a,b = map(int, input().split())
ice_cream[a] += [b]
ice_cream[b] += [a]
ans = 0
dfs(0,0)
print(ans)
남의풀이.. 3개씩 뽑는 조합의 수 - 안되는 조합의 수
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
worsts = set()
for _ in range(M):
a, b = map(int, input().split())
worst = 1<<(a-1)
worst |= 1<<(b-1)
for i in range(N):
worsts.add(bin(worst|(1<<i)))
cnt = 0
for worst in worsts:
if worst.count('1') == 3:
cnt = cnt + 1
print(N*(N-1)*(N-2)//6 - cnt)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 15789 CTP왕국은 한솔왕국을 이길 수 있을까? (0) | 2021.08.25 |
---|---|
[백준][Python] 13905 세부 (1) | 2021.08.25 |
[백준][Python] 15824 너 봄에는 캡사이신이 맛있단다. (0) | 2021.08.24 |
[백준][Python] 15823 카드팩 구매하기 : 이분탐색과 실패함수 비교 (0) | 2021.08.24 |
[백준][Python] 20365 블로그2 (0) | 2021.08.24 |