Skip to content

Latest commit

 

History

History
36 lines (30 loc) · 1.55 KB

조합.md

File metadata and controls

36 lines (30 loc) · 1.55 KB

조합

*아래 강의를 토대로 공부한 내용입니다.
(https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4#)

조합 이란, 서로 다른 n개의 원소 중에서 순서에 상관없이 r개를 선택하는 것이다.


코딩테스트에서 자주 등장하는 개념이니 암기할 정도로 익숙해져야겠다.

function solution(n, m){         
                let answer=[];
                let tmp=Array.from({length:m}, ()=>0);
                function DFS(L, s){
                    if(L===m){
                        answer.push(tmp.slice()); //얕은 복사 해줘야 함.
                    }
                    else{
                        for(let i=s; i<=n; i++){
                            tmp[L]=i;
                            DFS(L+1, i+1);
                        }
                    }
                }
                DFS(0, 1);
                return answer;
            }

            console.log(solution(4, 2));

위에서 얕은 복사를 해야하는 이유는 아래 링크를 참고하면 좋을 것 같다.
(깊은 복사와 얕은 복사에 대한 심도있는 이야기)


javascript의 얕은 복사와 깊은 복사에 대해서도 더 공부해봐야겠다.