본문 바로가기

재귀함수

배열에서 요소 3개를 더했을 때, 소수가 되는 경우의 개수 문제는 제목과 같고 자세한 문제는 아래에서 확인 가능하다. https://school.programmers.co.kr/learn/courses/30/lessons/12977 결과적으로 작성한 코드는 아래와 같다. 이중 재귀함수getCombinations 부분은 인터넷에서 그대로 가져왔다. getCombinations의 자세한 내용은 아래 포스팅으로 정리했다. 대단히 복잡한 함수이고 이걸 만든 사람은 어떻게 만들었을지 궁금하고 그분이 존경스럽다. https://gamunbidev.tistory.com/80 function solution(nums) { var answer = 0; const getCombinations = (arr, num) => { const results = []; if (num ===.. 더보기
재귀함수. 집요한 정리 프로그래머스 문제 하나가 재귀함수를 필요로 했다. 아래 문제이다. 소수 만들기이다. https://school.programmers.co.kr/learn/courses/30/lessons/12977 그래서 재귀함수를 들여다보았는데 문제를 풀기 위해 내가 들여다 본 재귀함수는 아래와 같다. const getCombinations = (arr, num) => { const results = []; if (num === 1) return arr.map(v => [v]); arr.forEach((fixed, index, origin) => { const rest = origin.slice(index + 1); const combinations = getCombinations(rest, num - 1); cons.. 더보기
깊은 복사는 다른 객체를 생성해 낸다고 보아도 되겠다. [JS 문법 종합반 3주차 - 1] 얕은 복사는 중첩된 객체를 얕은 복사하면 문제가 있었다. 관련하여 게시물참조 https://gamunbidev.tistory.com/54 그런 문제를 해결하는 것이 깊은 복사다. 깊은 복사를 하면 복사당한 객체나 복사로 생긴 객체 하나를 수정하면 그 건드린 객체만 바뀐다. (얕은 복사에서는 하나를 수정하면 둘다 바뀌는 문제가 있었다.) 여러 말 할 필요 없이 코드를 보자. var user = { name: 'wonjang', urls: { portfolio: 'http://github.com/abc', blog: 'http://blog.com', facebook: 'http://facebook.com/abc', }, arr: ['a', 'b'] }; // 깊은 복사 var copyObjectDeep = .. 더보기
얕은 복사의 문제점: 중첩된 객체를 복사하면 복사당한 객체는 복사로 생겨난 객체와 동시에 수정된다. [JS문법 종합반 3주차 - 1] 얕은 복사는 문제가 있다. 무엇일까? 중첩된 객체를 얕은 복사를 할 때가 문제이다. 중첩된 객체란 객체 안에 객체가 있는 경우다. 이 중첩된 객체가 복사당하면 복사 결과물인 객체와는 당연히 따로 서로 다른 객체가 되어야 할 것이다. 그런데 그게 안된다. 복사당한 객체를 수정하면 복사결과 객체까지 바뀌어 버린다. 반대로 복사결과 객체를 수정하면 복사당한 객체도 바뀐다. 객체내부의 중첩객체를 수정하면 그렇다. 얕은 복사는 for in 구문을 활용해서 하는데 코드는 아래와 같다. 문제가 있는 코드다. var user = { name: 'wonjang', urls: { portfolio: 'http://github.com/abc', blog: 'http://blog.com', facebook: 'http://f.. 더보기