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;
}
입력: 연이율
출력: 원금*2까지 걸리는 시간
통장에 천원을 넣었다고 생각하고 2천원이 될때까지 걸리는 시간을 구하겠음
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문에 바로 넣었고 레퍼런스에서는 변수로 할당해서 사용했다.
강제 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 이런식으로 동치연산자만 사용했더라.
훨신 세련된 방법인듯...!!
입력: 문자열
출력: 아이소그램인지 여부
function isIsogram(str) {
str = str.toUpperCase();
let setStr = new Set(str);
setStr = [...setStr];
return setStr.length === str.length;
}