오늘의 코팅 테스트 한 줄(복습) :

Edwin·2023년 2월 18일
0

구글링을 한 것이 너의 실력은 아니야, 다시하면 안보고 풀 수 있니? 시리즈

프로그래머스, x만큼 간격이 있는 n개의 숫자

해당문제는 가볍게 풀었다. 그러나 리펙토링으로 더 간단하게 만들 수 있을까?

function solution(x, n) {
    var answer = []
    let count = x;
    for(let i=0;i<n;i++) {
        answer.push(count)
        count += x
    }
    return answer;
}

x, x+x, x+x+x 와 같은 방법을 n번 만큼 배열에 넣어주고 싶은 구분이다.

  • 나의 고민은 answer.push()안에 반복문을 통해서 무언가를 기록할 수 있을까?
function solution(x, n) {
    var answer = [x]
    let count = n-2
    answer.push(answer.at()+x) // n-2 만큼 push 를 더 실행할 수 있을까?
    return answer
}

재귀함수에 대한 아이디어를 가지고 도전해보았다.

동작은 하는 것 같다.

RangeError: Maximum call stack size exceeded

무한하게 함수가 서로를 호출하며 호출 스텍이 터진 오류가 발생되었다. 여러 시도를 해보았지만, 방법이 없는 것인지, 방법이 있는데 해결하지 못하는 것인지, 현재로써는 찾지 못하겠다. PASS

조건부 삼항 연산자를 통해서 시도해본 내용이다. 위의 코드에 비해서 복잡하지만 9줄에서 현재 7줄로밖에 줄어들지 않았다. 괜한 시도인가? 아직 내가 자바스크립트를 모르는 문제일까? 질문해보면서, 다음문제로 오늘은 넘어간다.

function solution(x, n) {
    var answer = [x]
    let count = n-2
    answer.push(answer.at()+x) 
    count = count >0? count-1 : 0
    return count !== 0 ? count : answer
}


프로그래머스, 부족한 금액 계산하기
이 문제도 이해를 못해서 어렵게 풀었던 문제였던 것 같다.

  1. 처음놀이기구를 이용했을 때 : price
  2. 두번 이용했을 때 : price + price
  3. 세번 이용했을 때 : price + price + price
  4. n번 까지 이용한다.
  5. 이때 모자란 금액은 얼마일까?
    (1) 모자란 금액이 발생되면 모자란 만큼을
    (2) 그 이외에는 0을 반환하면 된다. ** 이 부분에 대해서 이전에 생각하지 못했다. 너무 많이 남은 경우이다.
function solution(price, money, count) {
    let arr = 0;
    for(let i=1;i<count+1;i++) {
        arr+=price*i
    }

    return arr-money > 0 ? arr-money : 0
}

단순하게 풀어보고 싶었지만 이루지 못했다. 이쁘게 풀기 위해서는 "가우스 공식/등차수열"이라는 것이 존재하는 것 같다. 그러나 나는 이루지 못했다.


프로그래머스, 2016년

function solution(a, b) {
    let week = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
    let dayOfWeek = week[new Date(`20016-${a}-${b}`).getDay()];
    return dayOfWeek;
}

이런 문제를 풀어야 하나라는 의문이 생겨서 구글링으로 2016년의 날짜를 불러왔다. 그래서 문제를 풀었다. 이렇게 푸는 것이 맞는지는 모르겠지만 말이다. 그래서 풀이를 할 때 이해하지 않고 그냥 넘어갔다. 해당 부분의 이해는 다른 포스트에서 진행하였다.

EDWIN벨로그, 모던자바스크립트, Date 객체

profile
신학전공자의 개발자 도전기!!

0개의 댓글