[BOJ2668] 숫자고르기
Updated:
숫자 최대한 많이 뽑기
- 세로 두 줄, 가로 N개 칸으로 이루어진 표
- 첫째 줄 : 1, 2, …, N
- 둘째 줄 : 각 칸에 1이상 N이하 정수
- 숫자 적절히 뽑으면, 뽑힌 정수들의 집합과, 뽑힌 정수 바로 밑의 (둘째 줄) 정수들이 이루는 집합이 일치
- 위 조건에 일치하는 정수 최대 개수
입력
- 첫째 줄 N (1 <= <=100)
- 둘째 줄에 들어가는 정수 순서대로
출력
- 첫째 줄에 뽑힌 정수들의 개수 출력
- 뽑힌 정수들을 작은 수부터 큰 수 순서로
설계
- DFS 이용
- Graph는 ‘첫째 줄 인덱스와 둘째 줄 값, 둘째 줄 값에 해당하는 첫째 줄 인덱스와 둘째 줄 값’ 과 같은 방식으로 구성
- 여기서 start node 와 current node가 같아지는 순간이 문제의 조건에 해당
- N번 반복 -> dfs의 시작 노드 (1 ~ N) (반복마다 방문 변수 초기화)
- 해당 조건의 start node를 배열에 넣어 출력
How I solved(click to github)
ref :
BOJ2668
Leave a comment