
15654번: N과 M (5)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
과정
[C++/백준문제] - 백준 15650, 15652 (DFS)
백준 15650, 15652 (DFS)
15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하
ssin-estella.tistory.com
이거랑 비슷한 문제인데
- 1부터 시작이 아니다. : 때문에 오름차순으로 정렬을 해줘야한다.
- 본인은 포함하지 않은 채 수열 자체가 오름차순일 필요가 없다. : 하나의 수열에 중복되는 수가 없기만 하면 된다.
이 두가지가 달랐다.
정렬의 경우 sort를 이용했고, 중복되는 수를 빼기 위해 isVisited로 방문 여부를 파악했다.
삽질한 부분은 백트래킹을 고려하지 않아서 DFS 함수 뒤에 isVisited를 false로 다시 풀어주지 않았다는 것이다..
그래서 처음에는 "아 이거 말고 number벡터 자체에서 해당 숫자가 있는지 파악해야겠다" 라고 생각했다.
그래서 find를 이용해서 number내에 sortNum이 있는지 파악했는데, number을 출력해보니 초기화를 따로 해주지 않아서 number에는 이전 값들이 들어있었다.
특히, 오름차순으로 정렬했기 때문에 마지막 숫자의 경우 무조건 number에 있어서 마지막 숫자의 DFS가 작동하지 않았다.
코드
'개발 > 알고리즘 문제풀이' 카테고리의 다른 글
백준 15663 (DFS, 백트래킹, 지역메모리, 함수스코프) (0) | 2024.04.16 |
---|---|
백준 15657 (DFS, 백트래킹) (0) | 2024.04.15 |
백준 15650, 15652 (DFS) (1) | 2024.04.12 |
백준 12865 (DP) (0) | 2024.04.11 |
백준 11725 (트리, DFS) (0) | 2024.04.10 |
이것저것 기억하고 싶은거 글쓰는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!