일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 딥러닝
- 프로그래밍언어론
- 라인플러스
- 라인
- 모두를 위한 딥러닝
- jvm
- 백준
- C++
- binary search
- DP
- 다이나믹프로그래밍
- 파이썬
- Spring Framework
- BFS
- STL
- 스프링 프레임워크
- leetcode
- dfs
- 프로그래머스
- 벤쿠버
- Python
- 스타벅스
- 머신러닝
- 백트래킹
- Java
- C/C++
- 시애틀
- 알고리즘
- spring
- 릿코드
- Today
- Total
케이스윔의 개발 블로그
[백준 알고리즘][DFS] 10265번 MT 본문
문제
남규는 동기들과 엠티를 가기 위해 버스를 대절했다. 그런데 과사의 실수로 대절버스의 인원이 잘못되어 남규의 동기들을 모두 태울 수 없었다. 이 와중에 동기들은 화를 내며 다음과 같은 말들을 주고받았다.
재혁: 동우가 안 가면 나도 안 간다.
동우: 세종이가 안 가면 난 안 갈래.
버스에 태울 수 있는 인원수는 한정되어 있는데 모두들 다른 누군가가 가지 않으면 자신도 가지 않겠다 하니 남규는 신경이 뻗쳤다. 게다가 술을 너무 많이 샀기 때문에 최대한 많은 인원을 데려가지 않으면 안 되는 상황이었다.
각 사람이 원하는 같이 갈 사람이 주어질 때, 버스에 태울 수 있는 사람은 최대 몇 명인지 알아내시오.
입력과 출력
첫 번째 줄에 사람 수 n과 버스에 태울 수 있는 사람 수 k가 주어진다. (1 ≤ k ≤ n ≤ 1 000)
두 번째 줄에 n개의 정수 xi (i = 1, 2, ... , n, 1 ≤ xi ≤ n) 가 순서대로 주어진다. xi는 xi번째 사람이 버스에 타지 않는다면 i번째 사람 역시 버스에 타지 않음을 의미한다.
결과는 모든 사람의 의견을 해치지 않고 최대한 태울 수 있는 인원수를 출력한다.
풀이
싸이클..?이라해야하나 사이클찾기 맞는거같다 2->3->2가 되면 2, 3 둘 다 태울 수 있고 그때 포함되는 사람이 2명이니까 그 때 태울 수 있는 명수보다 작으면 태운다 이미 누군가 타있는데 원래 태울 수 있는 인원보다는 작지만 기존에 먼저 태운사람들때문에 못타면 그 사람들을 빼고 태운다! 이부분이..어려울거같지만
테스트 케이스는 다 맞았는데 틀렸습니다가 나온다....질문검색을 보니까 내가 생각한 앞부분+ DP로 풀어야하는거 같은데....
예외케이스를 못찾으니 해결을 못하겠다 ㅠㅠ
'Algorithm > DFS &BFS' 카테고리의 다른 글
[백준 알고리즘][BFS] 2178번 미로 탐색 (0) | 2018.01.22 |
---|---|
[백준 알고리즘][BFS] 2644번 촌수계산 (0) | 2018.01.22 |
[백준 알고리즘][DFS] 2468번 안전영역 (0) | 2018.01.19 |
[백준 알고리즘][DFS] 11403번 경로 찾기 (0) | 2018.01.19 |
[백준 알고리즘][DFS] 11724번 연결 요소의 개수 (0) | 2018.01.18 |