본문 바로가기
728x90

Baekjoon/[Code.plus] 알고리즘 기초 2/261

[BOJ/백준] 15651 N과 M (3) ● [문제번호 15651] N과 M (3) https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net ● 알아야 할 것 : DFS (깊이 우선 탐색) : 재귀 ● 풀이 과정 : N과 M (1)에서 중복가능을 위해 visited를 제거하면 된다. 왜냐하면 N과 M (1)에서는 중복 불가능을 위해 visited를 이용하여 num 배열에 없는 숫자인지 확인하였지만, 이번 문제에서는 중복이 가능하기 때문에 확인 작업없이 1부터 순서대로 추가하고 출력하면 된다... 2021. 9. 8.
[BOJ/백준] 15650 N과 M (2) ● [문제번호 15650] N과 M (2) https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net ● 알아야 할 것 : DFS (깊이 우선 탐색) : 재귀 ● 풀이 과정 : N과 M (1)에서 'NM함수 - for반복문 - 초기값' 만 수정하면 된다. 왜냐하면 재귀를 이용하여 다시 NM함수를 실행했을 때, N과 M (1)에서는 다시 1부터 순회하지만, 이번 문제에서는 오름차순이라는 조건이 있기 때문에 num 배열에 마지막으로 추가한 숫자를 보다 커야.. 2021. 9. 8.
[BOJ/백준] 15649 N과 M (1) ● [문제번호 15649] N과 M (1) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net ● 알아야 할 것 : DFS (깊이 우선 탐색) : 재귀 ● 풀이 과정 : 브루트 포스를 어떻게 이용할까 하다가 이전에 풀었던 기억이 있어 DFS의 재귀를 이용하여 풀이했다. : num 배열에 있는 숫자인지 확인하고, 없으면 추가 + 추가했다고 표시(visited 배열) 있으면 다음 숫자로 넘어간다. 재귀 형태로 구현했으니 Base Case는 num 배.. 2021. 9. 8.
[BOJ/백준] 6603 로또 ● [문제번호 6603] 로또 https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net ● 알아야 할 것 : DFS : 재귀 ● 풀이 과정 : 기본적인 DFS문제에서 조합을 위한 중복 방지 조건을 추가 한 듯하다. ● 주의 할 것 : 순열이 아닌 조합이므로 중복 순열은 제거해야한다. 여기 문제에서는 중복 순열을 제거하기 위해 오름차순이라는 조건을 걸어서 해결하였다. ● 참고 할 것 : NULL ● 풀이 코드 #include using name.. 2021. 9. 2.
728x90