가로로 만들수있는 n개의 수가 제공 됐을때 만들수있는 모든 가로조합을 리턴해야하는 문제이다. 이런 가로를 만드는 재귀류의 문제에 난 되게 약한거같다. 그렇기에 풀이를 참고했고 풀이 또한 이해가 안되어서 유투브 강의를 참고했다. 가로를 만드는 데는 '(' 열린 가로와 ')' 닫힌 가로의 조합이 필요하는데 이걸 재귀적으로 수행하기 위해서는 base case 와 어느 특정 조건에서 재귀를 실행할지도 알아야한다
https://www.youtube.com/watch?v=s9fokUqJ76A
이 강의에서 보면 닫힌 가로는 열린가로보다 숫자가 적을때 재귀적으로 수행해야하고 하나의 재귀 콜을 할때 초이스가 두갈래로 나뉘기때문에 두가지에 조건에서 재귀를 수행해야한다.
이 조건으로 봤을때 완성된 코드이다.
가장 간단한 방법으로 설명하자만 열린 가로는 n 만큼 소진할수 있되 열린가로의 숫자가 더 많아지면 닫힌가로를 쓰면된다. 그리고 조건이 완성되고 다시 콜백이 되면은 pop_back()을 함으로 초기화를 시켜주면 되는 문제이다.
문제만 봤을때는 머리가 하얘졌지만 계속 풀고 풀이도 다시 보다보니깐 조금씩 이해가 되서 이거랑 비슷한 다른 문제들도 도전해보고싶다.
배운점:
1. 만약 재귀적으로 수행하는 과정에서 선택권이 나뉘어져야만 하는경우에는 과감히 시도해보자
2. 영상 자료도 적극적으로 참고하자.