전체 글

문제 내용 이🙎🏻‍♂️ function solution(s) { const convertedArr = Array.from(s); const result = convertedArr.map((v) => Number(v)); if (s.length === 4 || s.length === 6) { return result.includes(NaN) ? false : true; } return false; } /* (풀이) 문자열 s를 배열에 넣고 map메소드로 각자 Number타입으로 변형. 문자나 -, 소수 등은 NaN 으로 나오므로 요소갯수가 4,6 인 배열에 NaN가 있다면 false 없으면 true */ 테스트 케이스 11번이 계속 실패했다. 문제는 3e6 은 3 * 10 ^ 6을 의미한다. Number로..
에라토스테네스의 체 에라토스테네스의 체는 소수 찾기 알고리즘이다. "소수"란 1과 자신 이외에 자연수로는 나눌 수 없는 자연수이다. ( 2, 5, 7 등) 1~100까지의 숫자를 나열. 소수가 아닌 1을 제거. 2를 제외한 2의 배수를 제거. 3을 제외한 3의 배수를 제거. 4의 배수는 2의 배수로 이미 지워졌으므로 5를 제외한 5의 배수를 제거한다. 6또한 3의 배수로 지워졌으므로 7을 제외한 7의 배수를 제거. 11 부터는 11^2 > 100 이기에 지울 필요가 없다. 이런 알고리즘으로 주어진 n이하의 소수를 찾고 싶을 때 사용할 수 있다. 자바스크립트로 구현 function solution(n) { //n + 1 개의 요소를 가진 배열 생성 모두 true로 변경 후 소수제외값 0,1 을 false..
Learned 알고리즘(에라토스테네스의 체, 그리디 등) 에 대해 배웠다. 같은 문제를 다른방식으로 푸는 개념을 배웠다. (Array.from 등) reduce가 처리 되는 방식에 대해 배웠다. Liked 참고가 될만한 코드를 짰다👍 부트캠프 병행하면서 밀리지 않고 잘 해내고 있다. 조금이나마 알고리즘에 대해 알게됐다. 시간분배가 어느정도 이루어지고 있다. Lacked 부트캠프 핑계로 조금 효율성과 클린한 코드에 대해 고민하는 시간이 적어졌다..🥲 (운동도 미루지말자) 수학적 개념이 필요한 알고리즘을 완벽하게 이해하지 못했다. 이해하더라도 그걸 코드에 녹여내기가 쉽지않다. Array.from을 고민해봤지만 옵션이 어렵고 어떤 상황에서 적절하게 사용해야할지 아직 잘 모르겠다..
문제 내용 풀이🙎🏻‍♂️ function solution(d, budget) { let result = 0; d.sort((a, b) => a - b).reduce((acc, cur) => { if (budget >= acc + cur) { result++; } return acc + cur; }, 0); return result; } function solution(d, budget) { let result = 0; let sumEach = 0; d.sort((a, b) => a - b); for (i = 0; i = sumEach) { result++; } } return result; } /* (풀이) 1. 배열을..
문제 내용 풀이🙎🏻‍♂️ function solution(arr, divisor) { const result = arr .filter((value) => value % divisor === 0) .sort((a, b) => a - b); return result.length === 0 ? [-1] : result; } /* (풀이) arr 을 filter 로 나머지가 0 이 되는 배열을 오름차순으로 result에 할당. 삼항연산자로 배열이 비어있으면 -1을 리턴해줬다. 값이 정수인지 불리언 값으로 반환해주는Number.isInteger()를 이용한 방법도 생각해봤는데 결국 for문을 사용해야해서 가독성이 더 좋은 fliter 사용. */ length === 0 보다는 not연산자 이용해서 !result..
시간 복잡도를 고려한 풀이? 🤔 코딩 테스트 문제를 처음 풀었을 때 문제를 풀기에 급급했지만 막상 테스트에 통과하고 난 후 이 코드가 맞나? 이게 효율적인가?라는 생각을 해본 적이 있다면 이미 시간 복잡도에 대해 고민해 본 것이나 다름없다! 시간 복잡도를 고려한다는 건 입력값에 따라 로직이 실행되는 시간이 증가하고 감소하는 시간의 비율을 최소화하여 구성했다는 뜻이다. 시간 복잡도는 3가지의 표기법이 있는데 Big-O(빅-오) -> 최악을 고려 ( 걸리는 시간의 최대를 고려 ) Big-Ω(빅-오메가) -> 최선을 고려 ( 걸리는 시간의 최선을 고려 ) Big-θ(빅-세타) -> 평균을 고려 ( 걸리는 시간의 평균을 고려 ) 시간 복잡도에서 가장 자주 사용되는 표기법은 빅오 표기법으로 최악을 고려해야 한다...
문제 내용 풀이🙎🏻‍♂️ function solution(a, b) { let result = [a, b]; if (a > b) { for (i = 1 + b; i acc + cur); } /* (풀이) 각 조건에 따라 따라 for문을 돌려 result 배열에 값을 넣어주고 reduce 메소드를 이용해 값을 합산해서 return 해줬다. 가독성 좋은 코드는 아닌거 같은데..🤔 무언가 수학적 방법이 있을거 같은데 떠오르지 않는다.. *..
문제 내용 풀이🙎🏻‍♂️ function solution(price, money, count) { let result = 0; for (i = 1; i price * (idx + 1) ).reduce((acc, cur) => acc + cur); return sum - money > 0 ? sum - money : 0; } 두가지 방법을 적으셨는데 Array.from 을 이용한 풀이를 가져왔다. 이렇게 푸는 방법도 있다는 걸 숙지.
YunCow
Jr Front-End 🦊