코로 넘어져도 헤딩만 하면 그만

[알고리즘] 데일리코딩 1~2 본문

CODE STATES 44/데일리 코딩(알고리즘)

[알고리즘] 데일리코딩 1~2

꼬드리 2023. 3. 15. 09:53

1. 배열을 입력받아 차례대로 배열의 첫 요소와 마지막 요소를 키와 값으로 하는 객체를 리턴해야 합니다.

  • 빈 배열을 입력받은 경우, 빈 객체를 리턴해야 합니다.
  • 입력으로 받는 배열을 수정하지 않아야 합니다.

이 문제는 배열을 객체로 만드는 것이 포인트라고 생각한다. arr[0]과 arr[length-1]로 배열의 처음과 마지막을 뽑는 것까지는 수월했는데, 이것을 객체로 밀어넣는 상황에서 고민을 하기 시작했다. 

function transformFirstAndLast(arr) {
  // 배열을 입력받아 차례대로 배열의 첫 요소와 마지막 요소를
  // 키와 값으로 하는 객체를 리턴해야 합니다.
  //빈 배열을 입력받은 경우, 빈 객체를 리턴해야 합니다.
  //키와 값으로 하는 '객체'리턴하기
  if (arr.length === 0) {
    return {};
  } else {  
    let newKeys = arr[0];
    let newValue = arr[arr.length - 1];
    let obj = { [newKeys]: newValue };
    return obj;
  }
}

결론적으로 객체에 대괄호를 사용해서 key값을 넣을 수 있다는 것을 습득했다. (대괄호를 써서 프로퍼티 키를 동적 생성)

 

 

2. 연이율을 입력받아 원금이 2배 이상이 될 때까지 걸리는 시간(년)을 리턴해야 합니다.

이자율이 나와서 당황한 문제였다. 수학에 더 가깝지 않나... for문은 못 쓰는 건가? 궁금...

function computeWhenDouble(interestRate) {
  //원금은 1, 이자는 원금 * 연이율 1* interestRate/100
  //원금+이자가 원금의 2배
  //맞으면 년도를 리턴, 아니면 1년의 이자를 더해준다.
  //원금과 이자를 곱해준다.
  let origin = 1;
  let year=0;
  let interest = 1+interestRate/100;
  while(origin<2){
    origin = origin*interest;
    year++
  }
  return year;
}

 

Comments