Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 스프링 배치 공식문서
- JSONObject 분할
- 스프링 리액티브 프로그래밍
- 스프링 배치 메타 테이블
- 날짜형을 문자형으로
- 마이바티스 트랜잭션
- 무시하기
- 성능개선
- batchInsert
- org.json
- git stage
- JSON 분리
- 스테이지에 올리기
- 폐기하기
- spring reactive programming
- 마리아디비
- 문자형을 날짜형으로
- Meta Table
- multi update
- date_format
- 스프링 웹플럭스
- spring webflux
- nonblocking
- JSON 분해
- JobExecutionAlreadyRunningException
- jar 소스보기
- JSONArray 분할
- JSON 분할
- str_to_date
- ChainedTransactionManager #분산데이터베이스 #Spring Boot #MyBatis
Archives
- Today
- Total
ebson
boj.kr/9466 팀 프로젝트 (gold3) 파이썬 풀이 본문
1. 인덱스 번호를 노드번호, 요소 값을 선택한 노드번호로 갖도록 choose 리스트를 N+1 길이로 초기화
2. chk 리스트를 N+1 개의 0으로 초기화
3. team 리스트를 생성
4. 1번부터 N번 노드까지 순회하면서 아래를 반복
4.1. chk[번호] 값이 0인지 검사
4.2. chk[번호] 값이 0이면, cycle 리스트를 초기화하고 dfs(번호)를 호출
4.2.1. dfs(번호)를 다음과 같이 실행
4.2.1.1. global team 변수를 선언, chk[번호]를 1 증감, cycle에 번호를 append, nxt에 choos(번호)를 저장
4.2.1.2. chk[nxt]가 1이면, cycle에 nxt가 있는지 검사하고 있으면 cycle에서 nxt가 처음 발견되는 index부터 마지막까지 슬라이스하여 team에 추가
4.2.1.3. chk[nxt]가 1이 아니면, dfs(nxt)를 호출
5. N에서 team의 길이를 차감한 값을 출력
import sys
sys.setrecursionlimit(10**9)
def dfs(cur):
global team
chk[cur] += 1
cycle.append(cur)
nxt = choose[cur]
if chk[nxt] == 1:
if nxt in cycle:
team += cycle[cycle.index(nxt):]
else:
dfs(nxt)
T = int(input())
for _ in range(T):
N = int(input())
choose = [0] + list(map(int, input().split()))
chk = [0] * (N+1)
team = []
for node in range(1, N+1):
if chk[node] == 0:
cycle = []
dfs(node)
print(N-len(team))
체크 배열과 사이클 배열을 사용하지 않고 풀이하면 시간초과가 발생할 수 있다.
'ALGORITHM STUDY WITH PYTHON > BFS | DFS' 카테고리의 다른 글
boj.kr/1325 효율적인 해킹 (silver1) 파이썬 풀이 (0) | 2023.05.04 |
---|---|
boj.kr/1926 그림 (silver1) 파이썬 풀이 (0) | 2023.05.04 |
boj.kr/1068 트리 (gold5) 파이썬 풀이 (0) | 2023.05.03 |
boj.kr/1167 트리의 지름 (gold2) 파이썬 풀이 (0) | 2023.05.02 |
boj.kr/1967 트리의 지름 (gold4) 파이썬 풀이 (0) | 2023.05.02 |
Comments