목록분류 전체보기 (78)
초보 개발자의 성장 일기
문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 나의 문제 해결 방법 left부터 right까지 약수의 갯수를 구해서 짝수면 더하고 홀수면 뺀다. function solution(left, right) { let sum = 0; let cnt = 0; for(let i = left; i
동기(synchronous) 해당 코드 블록을 실행할 때 thread의 제어권을 넘기지 않고 순서대로 실행하는 것을 의미한다. console.log("This is synchronous...") for (let i = 0; i < 1000000000; ++i) { console.log("I am blocking the main thread...") } console.log("This is synchronous...DONE!") 비동기(asynchronous) 코드의 순서와 다르게 실행된다. 비동기 처리 코드를 감싼 블록은 task queue에 넣어지며 main thread가 동기 코드를 실행한 후에 제어권이 돌아왔을 때 이벤트 루프가 task queue에 넣어진 비동기 코드를 실행한다. setTimeou..
바닐라 자바스크립트는 브라우저 엔진으로만 실행이 가능하지만 node.js는 브라우저가 아니더라도 실행이 가능하다. calc.js const add = (a, b) => a + b; const sub = (a, b) => a - b; module.exports = { moduleName: 'calc module', add: add, sub: sub, }; 모듈을 내보낼 때 객체로 내보낼 수 있다. index.js const calc = require('./calc'); console.log(calc.add(1, 2)); console.log(calc.add(4, 5)); console.log(calc.sub(10, 2)); require로 경로를 불러와 사용이 가능하다. 터미널창에 node [파일명.확장자..
문제 설명 정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요. 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다. 나의 문제 해결 방법 function solution(array, n) { let closestNum = array[0]; array.forEach(num => { if (Math.abs(num - n) < Math.abs(closestNum - n) || (Math.abs(num - n) === Math.abs(closestNum - n) && num < closestNum)) { closestNum = num; } }); return closestNum; ..
문제 설명 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요. 나의 문제 해결 방법 처음 시작할 값을 정하고 num의 길이만큼 1을 더하여 배열을 만든다. 첫 값은 total값을 num으로 나눈 후에 내림을 해주고 num값에 2를 나누고 내림한 값을 다시 빼주면 배열의 첫번째 값이 된다. num이 짝수일떄는 처음값에 1을 더한다. function solution(num, total) { let firstNum = Math.floor(total/num) - Math.floor(num/2); let answer ..
SPA SPA(Single Page Application)은 하나의 페이지 요청으로 전체 웹앱을 사용하는 방식으로 유저는 웹페이지를 사용하며 모바일 앱 같은 경험을 느낀다. 리액트는 SPA 방식이다. React Router를 통한 SPA 내 화면 전환 및 주소 값 변경은 서버가 아니라 클라이언트 측에서 일어나기 때문에 Client-Side Routing이라고 한다. Client-side routing 기술을 활용, 페이지 진입 시 리로드없이 라우팅한다. AJAX 기술을 활용, 페이지 이동 시 서버에 데이터만 요청하여 자바스크립트로 페이지를 만든다. MPA와 다르게, 여러 페이지를 하나의 앱의 구성요소로 보고 여러 페이지 간의 스타일, 컴포넌트를 재활용하는 방향으로 구현한다. 자바스크립트만을 활용해 전체 ..
문제 설명 정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요. 나의 문제 해결 방법 배열의 첫번째부터 마지막까지 반복문을 돌려서 n과 빼기 연산을 했을 때 절대값이 가장 작은 순서대로 배열을 정렬한다.(거품정렬) 그리고 만약 절대값이 같을경우 뒷 숫자가 클 때 앞 배열과 위치를 바꾼다. function solution(numlist, n) { let temp = 0; for (let i = 0; i < numlist.length - 1; i++) { for..
문제 설명 소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 유한소수가 되기 위한 분수의 조건은 다음과 같습니다. 기약분수로 나타내었을 때, 분모의 소인수가 2와 5만 존재해야 합니다. 두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요. 나의 문제 해결 방법 분모와 분자를 기약분수로 만들고 유한소수의 조건을 만들기 위해서는 분모를 2나 5로 나눠서 몫이 1이 되면 유한소수로 판별 하면 된다고 생각했다. function solution(a, b) { let topNum = a; let bottomNum = b; fo..
비 구조화 할당 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담는것이다. 배열의 비 구조화 할당 const fruitList = ['apple', 'banana', 'orange']; 배열이 있을때 이 배열을 각각 호출하려고 한다. const apple = fruitList[0]; const banana = fruitList[1]; const orange = fruitList[2]; 먼저 각각의 변수에 배열의 인덱스를 넣어서 호출했다. 하지만 이 방법은 같은 배열을 불필요하게 반복하게 된다. let [apple, banana, orange] = fruitList; 배열안에 변수를 선언하고 배열을 할당하게 되면 각각 인덱스에 맞게 데이터가 할당이 된다. let [apple, banana, oran..
문제 설명 프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요. 나의 문제 해결 방법 처음에 시킨 치킨의수를 10으로 나누고 내림을 하면 서비스로 받을 수 있는 치킨의 수가 된다. 서비스로 받은 치킨의 수가 10보다 크거나 같은 조건을 만족하면 10으로 나눠서 내림 후에 앞서 받았던 서비스 치킨의 수와 더한다. 10보다 작을때까지 반복한다. function solution(chicken) { let getChicken = Math.flo..