[네이버 부스트캠프 7기] 뒤늦은 멤버십 합격
·
개발생활
Ho! 네이버 부스트캠프 멤버십에 합격했다. 챌린지를 완벽하게 했다고는 생각하지 않았는데, ( 이유는 .... 읍읍 말하면 컨텐츠 유포라 ㅠㅠ ) 합격 소식이 메일로 왔다. 개발 공부를 좀 더 하고 싶어서 회사를 퇴사하고 공부한지 5개월이 지나고 스스로의 실력을 검증하고 싶어서 신청한 부스트캠프가 여기까지 오게 될 줄은 몰랐다. 나에게 개발자로써 많은 것을 생각하게 해준 부스트캠프라 내심 멤버십도 되었으면 좋겠다고 생각했는데, 후반부로 갈수록 귀차니즴이 발생해버려서 날림으로 한 과제도 있는데 합격해서 좋으면서 부끄러운 느낌이다. 멤버십에서는 제대로 미션을 수행해서 챌린지보다 많은 것을 더 얻어갈 것이다!
[알고리즘] 재귀 함수를 이용한 순열, 조합
·
알고리즘/풀이 힌트
순열? 모든 경우의 수를 계산하는 알고리즘이다. ( 순서 고려 O ) [ 1, 3, 5 ] 가 주어졌다면 1 3 5 1 5 3 3 1 5 3 5 1 5 1 3 5 3 1 처럼 모든 경우의 수를 구하는 방법이다. function permutations(arr, n) { if (n === 1) return arr.map((v) => [v]); let result = []; arr.forEach((fixed, idx, arr) => { const rest = arr.filter((_, index) => index !== idx); const perms = permutations(rest, n - 1); const combine = perms.map((v) => [fixed, ...v]); result.push..
[알고리즘] 재귀 함수를 이용한 트리 순회 알고리즘
·
알고리즘/풀이 힌트
재귀 함수를 이용하는 트리 순회는 전위 순회, 중위 순회, 후위 순회가 있다. 전위 순회 루트 노드를 방문하고, 왼쪽 서브 트리를 전위 순회한 뒤 오른쪽 서브 트리를 전위 순회하는 방식이다. 1 / \ / \ 2 3 / \ / \ 4 5 6 7 트리가 있다면 1. 루트 노드 [ 1 ] 을 방문한다. 2. [ 2 ]를 방문한다. 3. [ 2 ]의 왼쪽 서브 트리로 이동한다. 4. [ 4 ]를 방문한다. 5. [ 4 ]의 왼쪽, 오른쪽 서브 트리가 없으므로 올라간다. 6. [ 2 ]의 오른쪽 서브 트리로 이동한다. ... 방식으로 [ 1, 2, 4, 5, 3, 6, 7 ] 순서대로 순회한다. preorder(tree) { 방문(tree.root); preorder(tree.left); preorder(tre..
[알고리즘] 재귀함수 - JavaScript
·
알고리즘/풀이 힌트
재귀함수? 자기 자신을 호출하는 함수이다. 이때 호출은 Call Stack에 쌓여서 스택 자료구조와 유사하게 동작한다. 함수형 프로그래밍에선 루프 구현을 재귀로 하는 경우가 많다. 자바스크립트에서의 재귀함수 콜 스택에 제한이 있다. 자바스크립트 엔진마다 다르지만 크롬의 경우 약 1만개이다. 성능이 그렇게 좋지는 않다. 재귀함수를 사용하는 경우 피보나치 수열 앞 두 항의 합이 뒤 항의 값이 되는 수열 function fibonacci(x) { if(x
[알고리즘] 소수 범위 구하기
·
알고리즘
들어가며 소수구하기 - JavaScript를 먼저 공부한 다음 푼 문제입니다. 바로 풀리지 않거나 설명이 필요하다면 참고하는 것을 추천드립니다. 문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 1000000이하의 자연수입니다. 입출력 예 n result 10 4 5 3 입출력 예 설명 입출력 예 #1 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환 입출력 예 #2 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환 나의 풀이 const n = 10; function solution(n) { co..
[알고리즘] 소수 구하기 - JavaScript
·
알고리즘/풀이 힌트
소수 ? 1 또는 자기 자신만을 약수로 가지는 수를 의미한다. 소수를 구하는 방법 2부터 N - 1까지 루프를 돌며 나눠보기 소수를 구할 때 가장 먼저 생각할 수 있는 방법으로 O(n) 시간 복잡도를 가진다. function is_prime(num) { for (let i = 2; i < num; i += 1) { if(num % i === 0) { return false; } } return true } 다른 소수 구하는 방법에 비해 느린편에 속한다. 제곱근으로 확인하기 어떤 소수라도 N의 제곱근보다 큰 수로 나눠지지 않는다는 공식을 이용한다. 시간 복잡도는 O(sqrt(n)) 으로 훨씬 빠른 방법이다. function is_prime(num) { for (let i = 2; i * i < num; i..
[네이버 부스트캠프 7기] 너무 많이 늦은 4주차 회고
·
개발생활
들어가며 글을 쓴 시점은 이미 부스트캠프가 끝났는데, 여러가지 정신없이 살다보니 회고를 올리는 것을 까먹었다. ㅠㅠ 월요일 간단한? 구현 느낌이라고 생각이 들어서 비교적 간단하게 과제를 수행했다. 마지막 주라고 생각해서 엉청 어렵게 나올 거라고 걱정했는데, 생각보다 어렵진 않은 과제였다. 화요일 개발 스타일을 평소와는 다르게 작업을 해야하다보니 불편한 부분이 조금 있었다. 그리고 과제가 개인적으로 느끼기엔 직관적이지 않아서 해결에 시간이 걸렸다. 수요일 너무 재미있는 과제였다. 일단 과제가 직관적이여서 너무 좋았고 딱 맞게 하나씩 해결하니 퀴즈를 푸는 기분으로 재미있게 과제를 풀었던 것 같다. 목요일 동료 캠퍼들은 난이도가 있었다고 이야기가 나왔다. 하지만 나는 이날 저녁 약속이 있어서 빨리 해결하려고 ..
[네이버 부스트캠프 7기] 많이 늦은 3주차 회고
·
개발생활
들어가며 글을 쓴 시점은 이미 부스트캠프가 끝났는데, 여러가지 정신없이 살다보니 회고를 올리는 것을 까먹었다. ㅠㅠ 우선 3주차를 먼저 작성하고 4주차도 조만간 작성할 것이다! 월요일 2주 동안은 월요일이 비교적 쉬운 과제였는데 이번 주는 월요일에 익숙하지 않은 과제여서 그럴 수 있지만 어렵게 느껴졌다. 확실히 부스트캠프가 다양한 부분을 학습할 수 있다보니 잘 접하지 않았던 부분이 과제로 나와서 시간이 걸렸지만 또 하나의 지식을 얻을 수 있었다. 화요일 2주차도 그렇고 화요일은 생각보다 직관적인 과제가 나와서 ( 1주차가 너무 충격인걸 수 있지만.... ) 재미있게 과제를 수행한 것 같다. " 어떻게 하면 더 효율적으로 작업할까 "에 대한 고민을 하면서 작업하니 과제 중 제일 재미있었던 과제였다. 수요일..