문제 N개의 정수가 주어지면 그 숫자들 중 K개를 뽑는 조합의 합이 임의의 정수 M의 배수인 개수 는 몇 개가 있는지 출력하는 프로그램을 작성하세요. 예를 들면 5개의 숫자 2 4 5 8 12가 주어지고, 3개를 뽑은 조합의 합이 6의 배수인 조합을 찾으면 4+8+12 2+4+12로 2가지가 있습니다. 풀이 function solution(n, k, arr, m) { let answer = 0; let tmp = Array.from({ length: k }, () => 0); function DFS(L, s, sum) { if (L === k) { console.log(tmp); if (sum % m === 0) { answer++; } } else { for (let i = s; i < n; i++) ..
문제 가장 윗줄에 1부터 N까지의 숫자가 한 개씩 적혀 있다. 그리고 둘째 줄부터 차례대로 파스칼 의 삼각형처럼 위의 두개를 더한 값이 저장되게 된다. 예를 들어 N이 4 이고 가장 윗 줄에 3 1 2 4 가 있다고 했을 때, 다음과 같은 삼각형이 그려진다. N과 가장 밑에 있는 숫자가 주어져 있을 때 가장 윗줄에 있는 숫자를 구하는 프로그램을 작성하 시오. 단, 답이 여러가지가 나오는 경우에는 사전순으로 가장 앞에 오는 것을 출력하여야 한다. 풀이 function solution(n, f) { let answer, flag = 0; let dy = Array.from(Array(11), () => Array(11).fill(0)); let ch = Array.from({ length: n + 1 }, ..
오늘 TIL 3줄 요약 우리들은 완벽한 소프트웨어를 만들 수 없다. 때문의 자신의 실수에 대한 대비책을 마련해야 한다. 계약에 의한 설계(Design By Contract) DBC개념을 이용해 계약으로 설계하라. 일찍 작동을 멈춰라. 오류가 났을 때 계속 진행하여 망치지 말고 멈춰라 TIL (Today I Learned) 날짜 2022. 03. 24 오늘 읽은 범위 4장. 실용주의 편집증 책에서 기억하고 싶은 내용을 써보세요. 시작하기 전에 자신이 수용할 것은 엄격하게 확인하고, 내어 줄 것에 대해서는 최소한도를 약속하는 것이다. 함수형이든 객체 지향이든 절차형이든 모든 프로그래밍 언어에서 DBC는 여러분을 생각하게 한다. - page.151 문제를 찾고 원인을 밝히기 위해서는 사고가 난 지점에서 일찍 ..
n과 r이 같거나 r이 0일 때 재귀 함수가 끝남. ( 5C3이 왜 4C2와 4C3으로 나뉘냐면 만약 5의 입장에서 바라보았을 때 5가 들어가 있고 나머지 2개만 선택되면 되어서 4C2 그리고 5가 안 들어가 있는 조합 4C3으로 나눌 수 있습니다. 문제 풀이 function solution(n, r) { let answer = []; function DFS(n, r) { if (r === 0 || n === r) return 1; else { return DFS(n - 1, r - 1) + DFS(n - 1, r); } } answer = DFS(n, r); return answer; } console.log(solution(5, 3)); 메모이제이션이란? 메모이제이션(memoization)은 컴퓨터 ..
문제 자연수 N을 입력하면 N!값을 구하세요. N! = n*(n-1)*(n-2)*.....*2*1입니다. 만약 N=5라면 5!=5*4*3*2*1=120입니다. 풀이 function solution(n) { let answer; function DFS(n) { if (n === 1) return 1; else return n * DFS(n - 1); } answer = DFS(n); return answer; } console.log(solution(5));
문제 10이하의 N개의 자연수가 주어지면 이 중 M개를 뽑아 일렬로 나열하는 방법을 모두 출력합 니다. 풀이 function solution(m, arr) { let answer = []; n = arr.length; let ch = Array.from({ length: n }, () => 0); let tmp = Array.from({ length: m }, () => 0); function DFS(L) { if (L === m) { answer.push(tmp.slice()); } else { for (let i = 0; i < n; i++) { if (ch[i] === 0) { ch[i] = 1; tmp[L] = arr[i]; DFS(L + 1); ch[i] = 0; } } } } DFS(0); r..
문제 다음과 같이 여러 단위의 동전들이 주어져 있을때 거스름돈을 가장 적은 수의 동전으로 교환 해주려면 어떻게 주면 되는가? 각 단위의 동전은 무한정 쓸 수 있다. 풀이 function solution(m, arr) { let answer = Number.MAX_SAFE_INTEGER; let n = arr.length; function DFS(L, sum) { if (sum > m) return; if (L >= answer) return; if (sum === m) { answer = Math.min(answer, L); } else { for (let i = 0; i < n; i++) { DFS(L + 1, sum + arr[i]); } } } DFS(0, 0); return answer; } le..
- Total
- Today
- Yesterday
- WSL2
- CLASS
- 노개북
- 윤성우 열혈C프로그래밍
- nextjs
- 프리온보딩
- 우아한테크코스
- env
- C언어
- jest
- 초보
- createPortal
- 노마드코더
- NextRequest
- import/order
- nodejs
- 아차산
- 북클럽
- 위코드
- electron
- NextApiRequest
- TopLayer
- 원티드
- javascript
- React
- 프론트앤드
- error
- 스토리 북
- Storybook
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |