자바스크립트

    [자바스크립트] 두 날짜 사이의 일수 구하기

    [자바스크립트] 두 날짜 사이의 일수 구하기

    How Many Days Between Two Dates 그 날로부터 며칠이나 지났지? 100에서 40을 빼는 것은 쉽습니다. 그러나, 6월 17일로부터 40일 전의 날짜를 구하는 것은 시간이 조금 걸립니다. 각 달마다 일 수가 틀리기도 하고, 10진수가 익숙한 우리에게 30짜리 묶음을 기준으로 계산하는 것은 생각을 필요로 합니다. 이러한 불편함을 해소하기 위해, 유용한 Date 메서드를 사용하여 아주 간단한 함수를 만들어 봅시다. 예시 getDays( new Date("June 14, 2019"), new Date("June 20, 2019") ) ➞ 6 getDays( new Date("December 29, 2018"), new Date("January 1, 2019") ) ➞ 3 // 두 날짜가 ..

    [자바스크립트] 각 자릿수의 합으로 홀수 짝수 구별하기

    [자바스크립트] 각 자릿수의 합으로 홀수 짝수 구별하기

    홀수 VS 짝수 인수로 받은 숫자의 모든 자릿수의 값을 각각 합하여 홀수일 경우 Oddish를 반환하고, 짝수일 경우 Evenish를 반환하는 함수를 만드시오. 예시 oddishOrEvenish(43) ➞ "Oddish" // 4 + 3 = 7 // 7은 홀수이다 oddishOrEvenish(373) ➞ "Oddish" // 3 + 7 + 3 = 13 // 13은 홀수이다 oddishOrEvenish(4433) ➞ "Evenish" // 4 + 4 + 3 + 3 = 14 // 14은 짝수이다 시도 틀린 코드 1 숫자 → 문자열 → 배열로 변환 후 Array.prototype.reduce 사용 인수로 받은 숫자를 toString()으로 문자열로 형변환 한 후 split()으로 한 글자씩 분리시킨다 스프레드..

    [자바스크립트] 배열 속 부메랑 패턴의 개수 구하기

    [자바스크립트] 배열 속 부메랑 패턴의 개수 구하기

    배열 속 부메랑 패턴의 개수 구하기 [3, 7, 3], [1, -1, 1], [5, 6, 5] // 부메랑 패턴의 예시 [3, 7, 3, 2, 1, 5, 1, 2, 2, -2, 2] // 이 배열에는 3개의 부메랑 패턴이 존재한다 : [3, 7, 3], [1, 5, 1], [2, -2, 2] // 부메랑 패턴은 겹쳐질 수 있다 [1, 7, 1, 7, 1, 7, 1] // 이 배열에는 3개의 부메랑 패턴이 존재한다 : [1, 7, 1], [7, 1, 7], [1, 7, 1], [7, 1, 7], [1, 7, 1] 부메랑은 직립하거나 거꾸로 된 V자 모양을 하고 있다. 부메랑 패턴을 첫째 요소와 마지막 요소가 같고, 가운데 요소만이 다른 길이 3의 하위 배열로 정의할 때 배열 내에서 부메랑 패턴의 개수를 구..

    [자바스크립트] 중복 기능의 불필요한 함수

    [자바스크립트] 중복 기능의 불필요한 함수

    불필요한 함수 인수로 전달받은 문자열을 반환하는 함수를 반환하는 함수를 만드시오.(함수의 반환은 문자열이 아닌 함수여야 한다.) 예시 const f1 = redundant("apple") f1() ➞ "apple" const f2 = redundant("pear") f2() ➞ "pear" const f3 = redundant("") f3() ➞ "" 시도 해결 코드 1 const redundant = function(str) { return function() { return str; } }; 반환하는 함수는 일종의 콜백 함수로, 호출됨으로써 가치를 다 하는 일반적인 함수와는 달리 인수로 넘겨지거나 반환값으로 사용된다. 매개변수를 지정하지 않았다. 매개변수를 지정하면 undefined가 나온다. 해결 ..

    [자바스크립트] 배열 내 참의 개수 구하기

    [자바스크립트] 배열 내 참의 개수 구하기

    참은 몇 개인가? 배열에 있는 참 값의 수를 반환하는 함수를 만드시오. 예시 countTrue([true, false, false, true, false]) ➞ 2 countTrue([false, false, false, false]) ➞ 0 countTrue([]) ➞ 0 시도 해결 코드 1 for문 const countTrue = function(arr) { let count = 0; for (let i=0; i arr.filter(v=>v===true).length; 배열 고차 함수를 사용하였다. true인 요소만 반환되어 만들어진 새로운 배열의 length 프로퍼티로 참의 개수를 반환하게끔 하였다. 해결 코드3 filter(boolean) const countTrue = arr => arr.fil..

    [자바스크립트] 성냥개비 하우스 문제

    [자바스크립트] 성냥개비 하우스 문제

    성냥개비 하우스 문제 성냥개비 하우스의 수학적 관계를 대수적으로, 그리고 기하학적으로 해석하여 인수로 단계를 받아서 해당 단계의 성냥개비 수를 반환하는 함수를 만드시오. 예시 단, 인수로 0을 받을 시, 0을 반환해야 한다. matchHouses(1) ➞ 6 matchHouses(4) ➞ 21 matchHouses(87) ➞ 436 시도 맞은 코드 패턴 파악 → 삼항 조건 연산자를 통한 예외 처리 const matchHouses = step => !step ? 0 : 6 + (step-1)*5; 1단계 : 6개 2단계 : 6개 + 5개 3단계 : 6개 + 5개 + 5개 처음만 6개이고, 이후에는 단계수-1*5개만큼 증가하는 패턴을 확인할 수 있다. 0단계라는 예외는 삼항 조건 연산자를 사용하여 처리하고,..

    [자바스크립트] 입력받은 정수까지의 합 구하기

    [자바스크립트] 입력받은 정수까지의 합 구하기

    입력받은 정수까지의 합 구하기 1부터 입력받은 정수까지의 합을 구하는 함수를 작성하시오 예시 addUp(4) ➞ 10 addUp(13) ➞ 91 addUp(600) ➞ 180300 시도 틀린 코드 const addUp = num => num.reduce((pre,cur) => pre+cur); 인수를 배열로 착각해버렸... 해결 맞은 코드 1 function addUp(num) { let sum = 0; for (let i = 1; i n * ++n / 2; 유명한 가우스의 덧셈알고리즘 : 1부터 n까지의 합 === (n + (n+1)) / 2 임을 이용하였다. 맞은 코드3 const addUp = num => (!num) ? 0 : num + addUp(num-1); 재귀 함수를 사용하였다. 인수로 들..

    [자바스크립트] 배열의 최솟값과 최댓값 찾기

    [자바스크립트] 배열의 최솟값과 최댓값 찾기

    배열의 최솟값과 최댓값 찾기 숫자 배열을 인수로 받아 최소 및 최대 값을 순서대로 반환하는 함수를 만드시오 예시 minMax([1, 2, 3, 4, 5]) ➞ [1, 5] minMax([2334454, 5]) ➞ [5, 2334454] minMax([1]) ➞ [1, 1] 시도 틀린 코드 1 변수의 스코프 에 대한 이해 부족 const minMax = function(arr) { for(let i=0;iarr[i+1]) max=arr[i]; if (arr[i]