2022. 9. 4. 01:20ㆍAlgorithm
지금까지 재귀함수 문제를 보면서 가장 헷갈렸던 지점은 호출 재귀함수에서 넘겨주는 변수값을 call-by-reference형식으로 생각 했다는 것이다. 그래서 처음 호출된 함수로 돌아왔을 때 변수값이 가장 마지막에 호출된 변수값과 같을 것이라는 착각을 했다.
그러나 각각에 호출된 재귀 함수들을 서로 연결시키는 것이 아닌 각각의 함수라고 생각하고 call-by-value 임으로 변수값이 변하지 않음을 인지해야 한다.
<참고 자료>
https://www.youtube.com/watch?v=OrTozbfUPbI
1. N과 M(1)
_ 중복x(수열_순서가 있음) , 오름차순x
https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
위 사진과 같이 각 함수를 다른 함수라고 인지하여 생각해야 한다.
2. N과 M(2)
_중복 x , 오름차순 o
https://www.acmicpc.net/problem/15650
15650번: N과 M (2)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
매개 변수로 idx, 즉 i 값을 넘겨주어 오름 차순이 되도록 만든다.
3. N과 M(3)
_ 중복(0), 오름차순(x)
중복이 가능하기 때문에 배열 visited/arr 을 사용하여 사용 가능 여부를 체크해 줄 필요가 없음.
오름차순이 아니어도 됨으로 idx 값으로 넘겨줄 필요가 없음.
'Algorithm' 카테고리의 다른 글
[Algorithm/자료구조] 체계적인 탐색(systematic search) (0) | 2022.11.04 |
---|---|
[Algorithm/BOJ] KnapSack _ DP (1) | 2022.10.13 |
[Algorithm]Topology Sort(위상정렬) (0) | 2022.10.06 |
[Algorithm/문해기] 재귀(recursion)_거듭제곱 (0) | 2022.09.15 |
[Algorithm/문해기] 유클리드 호제법_최대공약수 (0) | 2022.09.01 |