본문 바로가기

전체 글198

[Javascript] (프로그래머스 level 2) 튜플 [Javascript] (프로그래머스 level 2) 튜플 💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다. 내 풀이 function solution(s) { // {가 시작되면 }가 나올때까지 temp에 담는다. // 이temp를 temps에 담는다. const temps = []; for (let i = 1; i a.length - b.length) const ans.. 2022. 11. 22.
[Javascript] (프로그래머스 level 2) 캐시 [Javascript] (프로그래머스 level 2) 캐시 💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다. 내 풀이 function solution(cacheSize, cities) { let time = 0; const cache = []; const isFull = () => cache.length >= cacheSize; const isCached = (city) => cache.indexOf(city) !== -1; const cacheHitTime = () => time += 1; const cacheHit = (city) => { const indexOfCachedData = cache.indexOf(city) cache.splice(indexOfCached.. 2022. 11. 22.
[Javascript] (프로그래머스 level 2) h-index [Javascript] (프로그래머스 level 2) h-index 💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다. 내 풀이 function solution(citations) { citations.sort((a, b) => b - a) let count = 0; for (let i = 0; i citations[i]) { return count } } return count } 배운 점, 느낀 점 쉬운문제인데 1시간 30분에 걸쳐서 풀었습니다. 로직상 맞는것같은데 계속 틀려서 결국 구글링해서 힌트를 얻어 풀었습니다. 뭐때문에 이리 오래걸.. 2022. 11. 22.
[Javascript] (프로그래머스 level 2) 멀리 뛰기 [Javascript] (프로그래머스 level 2) 멀리 뛰기 💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다. 내 풀이 function solution(n) { let count = 0; const arr = []; function DFS(L, sum) { if (sum > n ) return; if (sum >= n || L === n) { if (sum === n) { count++; } } else { DFS(L + 1, sum + 1) DFS(L + 1, sum + 2) } } DFS(0, 0) return count % 1234567; } 이번에도 어설프게 재귀함수 배웠다고 사용해봤다가 시간초과로 실패했습니다!! 어떻게 푸는건지 궁금해서 검색해보니 이건 DP.. 2022. 11. 21.
[Javascript] (프로그래머스 level 2) 점프와 순간이동 [Javascript] (프로그래머스 level 2) 점프와 순간이동 💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다. 내 풀이 function solution(n) { const dp = Array(n + 1).fill(0); dp[1] = 1; for (let i = 2; i 0) { if (i % 2 === 0) { i = i / 2 } else if (i % 2 === 1) { count++; i = (i-1) / 2 } } return count; } 그래서 위 두번째 풀이처럼 n을 2로 나누다가 나머지가 생길때마다 count++을 해주는 형태로 간단하게 계산하였습니다. 이럴 경우 시간복잡도는 O(logN)이죠? 다른 사람들 풀이 참고 const solution.. 2022. 11. 21.
[Javascript] DFS 부분집합 만들기 부분 집합 수학 싫어하면 패스 😅 중고등학교 수학시간에 1,2,3을 가지고 부분집합을 만들려면 포함/미포함 2가지 경우를 3번 곱해서 (곱의법칙) 2x2x2 = 8가지의 경우의 수가 나온다고 배웠습니다. 이는 두가지 경우의 수를 3번 시행하는거라 뎁스4의 이진 트리와 같습니다. 모르겠고 그냥 구현하고 싶다면 수학적인 내용 모르겠고 그냥 구현만 하려면 아래 코드를 보시면 됩니다. 지금 내 수준으로 간단하게 DFS를 이야기해보면 DFS 함수 내에는 2가지 로직부분이 존재합니다. if문을 통해 예외처리를 하거나 마지막 처리를 해주고 (basecase) 탐색을 하는 부분 (순서가 중요함) 그래서 부분집합 탐색에서 어쩃든 포함/미포함, 1/0으로 트리가 나누어 질수 있다는 걸 깨닫고, 1로 탐색하는 방향, 0으로.. 2022. 11. 8.
[Javascript] (DFS) 깊이 우선 탐색 - 전위 순회, 중위 순회, 후위 순회 DFS : 깊이 우선 탐색 (한 방향으로 쭉 깊게 들어감) 재귀를 이해했다면 DFS를 이해할 차례다. DFS를 이해하기 위해 이진 트리의 순회를 먼저 해보자. 이진트리 순회 방식에는 3가지가 있다. 전위 순회 중위 순회 후위 순회 이름이 굉장히 구린데, 부모노드 (정점, vertex)의 순서가 앞에 있냐, 중간에 있냐, 뒤에 있냐 로 해석하면 이해가 된다. 코드로 설명하자. 전위 순회 function solution(n) { // 전위 순회 (부모 먼저 => 왼 오) function DFS(v) { if (v > 7) return; console.log(v); DFS(v * 2); DFS(v * 2 + 1); } DFS(n); } console.log(solution(1)); function soluti.. 2022. 11. 8.
[Javascript] (재귀) 이진수 만들기 [Javascript] (재귀) 이진수 만들기 어제 코테를 봤는데 재귀 문제가 2문제 나왔습니다. 부트캠프에서 공부할 때 구현 문제는 다 쉽게 푸는데 재귀 문제가 나왔을 때 처음으로 못 풀어서 공부했던 기억이 있는데요, 같은 문제가 코테에 나왔습니다. 기본 테스트 케이스는 다 맞췄지만 효율성 테스트에서 TLE가 떠서 결국 부분점수로 제출하고 끝을 냈습니다. 코테가 어렵기로 유명한 회사의 시험을 친것도 아닌데 당황하는 경험을 하니 부족함을 많이 느꼈습니다. 그래서 재귀와 재귀를 활용한 그래프 탐색을 정복하기로 결정했습니다. 프론트엔드 개발자로써 화면 구현에 지금 당장 알아야 하는 내용이 아닐지 모르지만 지난 네부캠 탈락 후기에 적었듯이 '코테'라는 관문 때문에 내가 원하는 교육이나 입사를 못.. 2022. 11. 8.
<이펙티브 엔지니어> - 에드먼드 라우 이펙티브 엔지니어 제목에서 알 수 있듯 "어떻게 하면 효율적으로, 효과적으로 일하는 엔지니어가 될것인가?"에 관한 책이다. 기억에 남는 이야기들 가장 기억에 남는 점은 학습에 집중하라는 이야기이다. 학습률에 투자하면 복리 효과처럼 학습속도가 평생에 걸쳐 누적되어 효과를 보게 되므로 학습률을 개선하는데 노력하는것이 가장 효과적인 활동이라는 이야기다. 네트워킹 모임에 꾸준히 참석한 이야기도 기억에 남는다. 저자는 네트워킹에 참석해 어색해 하던 사람에서 꾸준히 참석하고 노력하면서 네트워킹에 익숙해지고 덕분에 좋은 사람도 많이 만나는 사람으로 변하는 과정을 이야기한다. 나 또한 내 주변 친한 사람들을 제외하곤 잘 안만나는 사람이었다. 하지만 이 책을 읽고 나서 나름 최선을 다해 앞서나간 개발자분께 연락도 해보고.. 2022. 11. 7.
30년의 개발 경험을 이야기해주는 책 <개발자로 살아남기> - 박종천 책을 알게 된 경로 해당 책을 알게 된 계기는 "박종천"님의 세미나를 "직강"하는 영광을 누렸기에 알게 되었습니다! 구름 커밋이라는 행사에 오프라인으로 참석하여 3분의 시니어 개발자들의 강연을 들었는데요, 박종천님의 강연이 꽤나 인상 깊었고, 또한 책으로 더 자세한 이야기를 들을 수 있다는 말에 솔깃해 바로 책을 읽게 되었습니다. 사실 30년이라는 개발 경력이 있다보니 10년 단위로 3챕터로 내용이 나뉘어있었습니다. 그래서 저는 ... 첫 챕터인 "성장하는 10년" 부분과 마지막 공통부분인 이렇게 30년을 개발자로 커리어를 살면서 수립하게 된 "시간관리법"에 대한 부분, 그리고 마지막 부록인 "개발자 고민상담 119"부분을 중점적으로 읽었습니다. 이 책을 읽으며 많은 부분에서 공감도 되고 재미도 있게 읽.. 2022. 11. 3.