Section2 DailyCoding RECAP 01020316

KoEunseo·2022년 9월 7일
0

Daily_Coding

목록 보기
8/21

01

변수를 선언해서 객체를 조립하는 방식

function transformFirstAndLast(arr) {
  //입력: 배열
  //출력: 배열[0] : 배열[arr.length-1];
  let result = {};
  if(arr.length === 0) return {};

  let key = arr[0];
  let value = arr[arr.length-1];
  
  result[key] = value;
  return result;
}

객체에 바로 키값을 주는 방식

function transformFirstAndLast(arr) {
  let result = {};
  if(arr.length === 0) return {};
  result[arr[0]] = arr[arr.length-1];
  return result;
}

02

입력: 연이율
출력: 원금*2까지 걸리는 시간
통장에 천원을 넣었다고 생각하고 2천원이 될때까지 걸리는 시간을 구하겠음

  • 이때 이자는 단리가 아니라 복리로 추측
  • 이자가 10%일때 다음해에
    원금 천원 + 이자 백원 = 천백원에 이자가 붙는다.
  • 몇번 반복해야할지 불명확하기때문에 while문에 통장에 있는 돈이 목표에 도달할때까지 돌리라는 조건을 주었다.
    잘 해놓고 count에 초기값으로 1을 줘서 자꾸 틀림ㅋㅋㅋㅋㅋ 하
function computeWhenDouble(interestRate) {
  let 통장 = 1;
  let goal = 2;
  let count = 0;
//통장에 있는 돈이 목표에 도달할때까지 돌리기
  while(통장 < goal){
    count++;
    통장 = 통장 + (통장 * interestRate * 0.01);
  }
  return count;
}

레퍼런스코드에서는 이자를 그냥 1+연이율로 줬더라.
이때 연이율이 10%라면 1.1이 됨. (100% + 10% = 110% = 1.1)
내 풀이에서 (통장 x interestRate x 0.01) 과 같은 맥락.
나는 while문에 바로 넣었고 레퍼런스에서는 변수로 할당해서 사용했다.

03

강제 while문 사용이 권고되는 문제...ㅡㅡ젤 싫은타입임 웩

function powerOfTwo(num) {
  //num/2를 num이 2 이하가 될때까지 반복
  if(num === 1) return true;
  while(num > 2){
    num = num / 2;
  }
  if(num === 2) return true;
  else return false;
}

2의 거듭제곱인지 판별하는 함수.
일단 num이 2가 되거나 2보다 작아질때까지 계속 2로 나눈다.
num이 2라면 2의 거듭제곱이겠고
num이 2보다 작으면 2의 거듭제곱이 아님!

17을 2로 계속 나누면 2보다 작아지는 순간 num은 1.0625가 된다.

레퍼런스를 보니 불리언을 리턴할때 나처럼 분기를 주지 않고
return num === 2 이런식으로 동치연산자만 사용했더라.
훨신 세련된 방법인듯...!!

16

입력: 문자열
출력: 아이소그램인지 여부

  • 아이소그램: 각 알파벳을 한번씩만 이용한 단어나 문구
function isIsogram(str) {
  str = str.toUpperCase();
  let setStr = new Set(str);
  setStr = [...setStr];
  return setStr.length === str.length;
}
  1. 대소문자 구별없이 판별하기 위해 처음에 str을 대문자로 변환
  2. new Set을 이용해서 중복되는 값 삭제된 '객체' 변수에 할당
  3. new Set한 객체 spread 이용해 배열로 바꿔줌
  4. 입력받은 str과 중복되는 값이 삭제된 변수의 길이를 비교해 불리언값 리턴
profile
주니어 플러터 개발자의 고군분투기

0개의 댓글