티스토리 뷰
반응형
문제
문제
파티에 있는 사람들을 저장하는 파티 리스트를 만들고,
또 같은파티에 있는 사람들을 저장하기위해 인접리스트를 사용했다.
처음부터 진실을 알고있는 사람을 큐에 다 저장 한 후, bfs방식으로 인접리스트를 돌며
새로 소식을 접한 사람은 진실을 들었는지 여부를 저장하는 heard배열에 저장해줬다.
그 후, 파티리스트를 돌며 heard배열에 있는 사람이 한명이라도 포함된 파티는 break을 해줬고,
한명도 포함되지 않은 경우만 count를 늘려갔다. 마지막에 count를 프린트해줬음
import sys
from itertools import combinations
from collections import deque
# N: 사람수 / M: 파티 수
N, M = map(int, sys.stdin.readline().split(" "))
# 인접리스트
adj = [[] for _ in range(N)]
parties = []
# 진실을 아는 사람
know = list(map(int, sys.stdin.readline().split(" ")))
heard = [0 for _ in range(N)]
# 한명도 모르면
if know[0] == 0:
# 파티 개수 출력
print(M)
else:
# 맨 앞값(인원 정보) 삭제
know.pop(0)
# 인접리스트에 추가, 파티리스트에 인원 넣기
for _ in range(M):
party = list(map(int, sys.stdin.readline().split(" ")))
if party[0] == 0:
parties.append(["none"])
else:
parties.append(party[1:])
# 혼자가 아닌 경우 조합으로 둘씩 짝지어줌 -> 인접리스트에 넣기
if party[0] != 1:
com = combinations(party[1:], 2)
for each in com:
adj[each[0]-1].append(each[1] - 1)
adj[each[1]-1].append(each[0] - 1)
# 큐에 아는사람 다 넣기
queue = deque()
for each in know:
queue.append(each-1)
heard[each-1] = 1
# bfs로 인접리스트 탐색
while queue:
now = queue.popleft()
for one in adj[now]:
if heard[one] == 0:
heard[one] = 1
queue.append(one)
heardperson = []
for i in range(len(heard)):
if heard[i] == 1: # 들은애
heardperson.append(i+1)
count = 0
for party in parties:
flag = 0
for each in heardperson:
if each in party:
flag = 1
break
if flag == 0:
count += 1
print(count)
문제 자체는 어렵지 않다고 생각했는데 테스트케이스가 많이 주어지지 않아서 구멍을 찾는게 힘들었던 문제.
다른분들이 찾아둔 반례에서 원인을 발견했다. 원인은 플래그를 초기화해주지 않은 실수였다 ㅠㅠ
TC1
4 4
1 1
2 1 2
1 3
2 3 4
0 0
(답 3)
TC2
4 4
1 1
2 3 2
3 4 1 3
2 4 1
0 0
(답 1)
TC3
3 2
1 1
2 2 3
2 1 2
(답 0)
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 안드로이드 카카오톡으로 로그인
- 데이터바인딩 뷰바인딩 차이
- 코틀린
- 파이썬 최대공약수
- 카카오톡으로 로그인 오류
- 투포인터 알고리즘 파이썬
- 백준
- 백준 1806
- Kotlin
- 코틀린 데이터바인딩
- 투포인터 알고리즘
- 백준 2003
- 코틀린 뷰바인딩
- 시뮬레이터 키보드
- 카카오 키해시
- 안드로이드 키해시
- 코틀린 바텀네비게이션
- counting sort
- flutter simultor
- 소수 구하기 파이썬
- 프로그래머스
- kotlin fragment
- 코틀린 리스트뷰
- 백준알고리즘
- 백준 1644
- 전화번호목록 파이썬
- 카카오 기출
- 코틀린 뷰페이저
- TextFormField keyboard
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함