팀 이름

사용할 언어

💻 문제

피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다.

ex_ F(4)인 경우 0 1 1 2 '3' 이므로 F(4) = 3 입니다.
// 1번 재귀로 구현

function fibonacci(n) {
	if(typeof n !== 'number') return;
	if(n < 2) return n;
    
	return fibonacci(n - 1) + fibonacci(n - 2);
}
// 2번 반복문과 변수로 구현

function fibonacci(n){
	if(typeof n !== 'number') return;
	if(n < 2) return n;
	
	let preprev = 0;
	let prev = 1;
	let curr = 0;

	for (let i = 2; i <= n; i++) {
		curr = preprev + prev;
		preprev = prev;
		prev = curr;
  }

 return curr;
}
// 3번 배열에 메모하기(인덱스로 접근)

function fibonacci(n){
	if(typeof n !== 'number') return;
	if(n < 2) return n;
	
	const arr = [0,1];
	
	for (let i = 2; i <= n; i++) {
		arr.push(arr[i - 1] + arr[i - 2]);
  }

  return arr[arr.length - 1];
}

💻 문제2 (~21:40)

waterMelon함수는 정수 n을 매개변수로 입력받습니다.

길이가 n이고, 수박수박수…와 같은 패턴을 유지하는 문자열을 리턴하도록 함수를 완성하세요.

ex_ waterMelon(4)이 4이면 ‘수박수박’을 리턴하고 waterMelon(3)이라면 ‘수박수’를 리턴하면 됩니다.
//방법1
function waterMelon(n){
	if(typeof n !== 'number') return;
	if(n<1) return '';
	
	const watermelon = '수박';
	
	if(n % 2 === 0 ){
	  return watermelon.repeat(n / 2);	
	} else {
		return watermelon.repeat(n / 2) + '수';	
  }
}
const start = Date.now();

//방법1
function waterMelon(n){
	if(typeof n !== 'number') return;
	if(n<1) return '';
	
	const watermelon = '수박';
	
	if(n % 2 === 0 ){
	  return watermelon.repeat(n / 2);	
	} else {
		return watermelon.repeat(n / 2) + '수';	
  }
}

waterMelon(5000000)

const end = Date.now()

console.log(end - start
//방법2
function waterMelon(n){
	if(typeof n !== 'number') return;
	if(n<1) return '';
	
	let result = '';
	for(let i = 1; i <= n; i++){
		if (i % 2 === 1){
				result += '수';
		} else{
				result += '박';
		}
	}

	 return result;
}
const start = Date.now();
//방법2
function waterMelon(n){
	if(typeof n !== 'number') return;
	if(n<1) return '';
	
	let result = '';
	for(let i = 1; i <= n; i++){
		if (i % 2 === 1){
				result += '수';
		} else{
				result += '박';
		}
	}

	 return result;
}

waterMelon(5)

const end = Date.now()

console.log(end - start)
console.time()

//방법1
//default: 0.02685546875 ms
function waterMelon(n){
	if(typeof n !== 'number') return;
	if(n<1) return '';
	
	const watermelon = '수박';
	
	if(n % 2 === 0 ){
	  return watermelon.repeat(n / 2);	
	} else {
		return watermelon.repeat(n / 2) + '수';	
  }
}

waterMelon(5000000)

console.timeEnd()