이야기를 나눠요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
스프링 핵심 원리 - 기본편
진짜 강의 구매하길 잘했다는 생각이 너무 듭니다 🥹
- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 아직 강의를 완강한 것도 아니고 로드맵을 전부 구매하지는 않았지만 지금까지의 설명을 들었을 때 사람들이 그렇게 호평한 이유를 알 것 같습니다! 주워들었던 용어들에 불과했던 IoC, DI, SOLID 원칙 등등.. 특히 역할과 구현 분리 부분에서 자동차와 연극 비유는 레전드였습니다 👏👏사실 저는 그동안 node.js 기반으로만 개발 공부를 하고 있었어서 처음에 스프링 무료 버전을 들었을 때 까지만 하더라도 유료 강의들로 넘어간다고 해서 내가 이해할 수 있을까..? 라는 불안감이 있었는데, 지금처럼 계속 공부한다면 충분히 스프링도 익숙해질 것이라 생각하게 되었습니다! 영한 님이 이 글을 보실지는 모르겠지만.. 진짜 감사드립니다 👍👍👍 모르는 게 생기면 바로 바로 여쭤보겠습니다!
-
자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
졸업선물 문제 클래스 이용해서 풀었습니다 !
완전 탐색 문제는 어렵네요 강의 보기 전에 하나씩 풀어보는데 졸업선물 문제는 기억에 남아서 올려봅니다. 그리고 강의도 재밌고 효율적으로 생각하는 방식을 잘 알려주시는 거 같습니다. <script> function solution(m, product){ class Product{ constructor(product = []){ this._product = product; } get price(){ return this._product[0]; } get fare(){ return this._product[1]; } disCountCost(){ return this.price / 2 + this.fare; } cost(){ return this.price + this.fare; } } class Products{ constructor(products = []) { this._products = products; } get commodities(){ return this._products; } get numOfProducts(){ return this.commodities.length; } map(transform){ return new Products(transform(this.commodities)); } totalCost(){ return this.commodities .map(product => product.cost()).reduce((sum, v) => sum + v, 0); } } function possibleCost(products){ return products.commodities .map((v, i) => [v, products.map(makeDrop(i))]) .map(([v, products]) => v.disCountCost() + products.totalCost()) .reduce((minCost, current) => Math.min(minCost, current)); } function makeChildren(products){ const total = products.numOfProducts; return total > 1 ? products.commodities .map((_, idx) => products.map(makeDrop(idx))) : [products]; } function makeGeneration(depth, products){ if(depth === 0) return [products]; return makeChildren(products) .map(sub => makeGeneration(depth - 1, sub)) .flat(); } const makeDrop = i => arr => arr.slice(0,i).concat(arr.slice(i+1)); const commos = new Products(product.map(commo => new Product(commo))); let limit = commos.numOfProducts; for(let i = 0; i < limit; i++){ if(makeGeneration(i, commos) .filter(prod => possibleCost(prod) <= m) .length > 0) { return limit - i; } } } let arr=[[10, 3], [6, 6], [2, 2], [4, 3], [4, 5]]; console.log(solution(28, arr)); </script>