전체 글

문제 내용 풀이🙎🏻‍♂️ function solution(n) { const squareRoot = Math.sqrt(n); return Number.isInteger(squareRoot) ? (squareRoot + 1) * (squareRoot + 1) : -1; } sqrt 메서드는 제곱근을 반환한다. 즉 타겟 값에게 루트를 씌워서 반환한다는 소리. 주어진 n에 sqrt를 사용했을 때 양의 정수의 제곱이라면 정수가 나오게 된다. 그 이후에는 정수인지 판단하여 boolean 값을 반환하는 isInteger메서드를 이용해 삼항연산자로 정수라면 제곱의 +1 값을 곱해서 리턴 정수가 아닐 경우에는 조건대로 -1 을 리턴한다 피드백 풀이 function solution(n) { const squareRoot..
문제 내용 풀이🙎🏻‍♂️ function solution(n) { let convertedNumber = n .toString() .split("") .map((v) => Number(v)); return convertedString.reduce((acc, cur) => acc + cur); } 주어진 숫자 n을 문자열로 타입변경. split을 이용해 각각의 요소로 배열반환. map으로 순회를 돌며 숫자로 변환. reduce메서드를 이용해 전부 더해준다. 더 좋은 풀이 function solution(n) { return n .toString() .split("") .reduce((acc, cur) => acc + Number(cur), 0); } 1 에서 2 까지는 동일하게 진행하고 굳이 map메소드를..
문제 내용 풀이🙎🏻‍♂️ function solution(a, b) { const resultDay = new Date(2016, a - 1, b); switch (resultDay.getDay()) { case 0: return "SUN"; case 1: return "MON"; case 2: return "TUE"; case 3: return "WED"; case 4: return "THU"; case 5: return "FRI"; case 6: return "SAT"; } } switch를 이용해 풀어봤다. 해당하는 날짜의 Date객체를 생성해주고 getDay 메서드 리턴값에 따라 값을 리턴해줬다. 다른분 풀이 function solution(a, b) { const days = ["SUN", "M..
Learned SOLID 원칙에 대해 알게되었고 단일 책임 원칙에 대해 배웠다. 합을 구하는 문제에서 숫자를 문자열로 다시 숫자로 변환하는 과정에서 map을 이용하기보다 reduce메서드로 한번에 끝내는 법을 배웠다. getDay 메서드 이용시 반환값이 숫자인점을 이용해 배열의 index값으로 활용하는 법을 배웠다. Liked reduce가 좀 이해가 안가서 사용을 피했었는데 이번에 감을 잡았다. 점점 좋은 코드를 짜는 방법들을 배워가고 있다 (단일원칙, 뎁스는 3이하, 함수는 15줄 이하 등) 문제를 해결할 방법은 아직까지는 보면 바로 떠오른다👍 시간을 나름 효율적으로 사용하려고 노력중이다 Lacked 많은 메소드를 배운만큼 정확한 사용법이 헷갈린다.. 사용할 때 무슨역할이고 이걸 써야한다는건 알지만 ..
자바스크립트 언어 자바스크립트는 동적 타이핑 특징을 가지고 있고 동적 타입 언어라 한다. 동적 타입 언어는 변수의 타입은 선언이 아닌 할당에서 결정(타입 추론) 이 되고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 데이터 타입의 종류 자바스크립트는 총 7개의 데이터 타입을 제공하고 그중 원시 타입(primitive type)과 객체 타입(object/reference type)으로 분류된다. 원시 타입 : number(숫자), string(문자열), boolean(참, 거짓), undefined(자료형 미설정), null(값이 없음), Symbol(ES6에서 추가된 타입) 객체 타입 : 객체{ }, 배열[ ], 함수 등.. Number (숫자) 다른 언어는 정수와 실수를 구분해 int..
에러 발생 개인 과제 오픈마켓을 미리 만들어 보던 중 발생한 오류. 상품 디테일 페이지의 데이터를 불러와 jsx파일에 뿌려주는 도중 가격 부분에 대한 , 을 찍어주는 정규표현식을 넣어 만들어 줬는데 데이터를 불러오기 전에 변수에 값을 할당하니 undefined.price 가 되어 에러가 났다. 해결 getPriceWon 함수를 만들어 넣어줬다. jsx 문법에 함수를 실행하는 게 별로라면 useMemo를 이용해 디펜던시를 productsData로 설정해주고 함수를 직접 할당해줄 수 있지만, 메모이제이션이 필요한 함수인가를 생각해보면 아니기에 함수 자체를 할당했다. useState내에 초기값을 { price: '' } 처럼 할당하는 것도 가능하다. 공부 필요한 부분 useEffect는 컴포넌트 마운트 후에 ..
문제 내용 풀이🙎🏻‍♂️ function solution(s, n) { const result = []; for (let string of s) { let convertedString = string === " " ? " " : string.charCodeAt(); const notblank = !(convertedString === " "); if (notblank && convertedString 90) { convertedString -= 26; } } if (notblank && convertedString >= 97) { convertedString += n; if (convertedString > 122) { convertedString -= 26; } } notblank ? result.pu..
Greedy Algorithm 이란? 말 그대로 탐욕스러운, 욕심 많은 이라는 뜻이다. 매번 선택을 할 때마다 항상 최선의 방법을 선택한다. 그리디는 매 선택(지역적)으로는 최선을 택하지만 그 선택들이 최종(전역적)으로 봤을 때 최선이라는 보장은 없다. 매순간 최적을 따라가면 ex) 1-1-1-100 보다는 1-1-10-10이 전체적으로 봤을때는 더 짧은 길 이기 때문. 그리디 알고리즘 속성 그리디 알고리즘이 성립하려면 두가지의 조건이 필요하다. 탐욕 선택 속성 (Greedy Choice Property) : 이전의 선택이 다음 선택에 영향을 주지 않는다. 최적 부분 구조 (optimal substructure) : 매 선택의 순간의 최선이 전역적에 대한 최선이어야 한다. 이해를 위한 예시 및 문제 마시..
YunCow
Jr Front-End 🦊