백엔드/Javascript
[Javascript] 자료구조, 이중for문(별쌓기), 재귀함수(피보나치수열)
청포도 에이드
2022. 1. 5. 16:09
728x90
목차
-스택, 큐, 데큐
-이중 for문(별쌓기)
-재귀함수(피보나치수열)
스택
LIFO 후위선출
가져오기 O(n)
추가하기 O(1)
삭제하기 O(1)
큐
FIFO 선위선출
데큐
양 방향 가능
스택+큐
콜 스택(call stack)
콜 스택이란 컴퓨터 프로그램에서 현재 실행 중인 서브루틴에 관한 정보를 저장하는 스택 자료구조이다. 서브루틴의 이러한 실행은 여러 단계로 중첩될 수도 있는데, 다른 호출에 의해 또 다른 서브루틴으로 넘어가버리거나, 재귀같은 특별한 경우가 있다.
이중 for문 (for문 안에 for문)
이중 for문을 사용하여 크리스마스 트리를 만들어보자.
let star = '';
for(let i=0; i<10; i++){
for(let j=9; i<j; j--){
star += " "
}
for(let k=0; (i*2)>=k; k++){
star += "*"
}
star += "\n"
}
// 위는 나뭇잎, 아래는 나무기둥
for(let n=0; n<2; n++){
for(let l=0; l<7; l++){
star += " "
}
for(let m=0; m<5; m++){
star += "*"
}
star += "\n"
}
console.log(star)
출력 결과
피보나치 수열
let numbers = [];
function fibo2(n){
if(numbers[n]!=undefined){ //이미있는건 그대로 리턴
return numbers[n];
} else if(n===1|| n===2){
return numbers[n] =1;
}else{
return numbers[n] = fibo2(n-2) + fibo(n-1)
}
}
console.log(fibo2(40))
피보나치 수열 같은 경우 더하는 수가 올라갈 수록 런타임 시간이 길어진다.
따라서 이미 구한 값을 또 구하지 않고, 저장해두었다가 다시 꺼내어 쓰는 형태로 코드를 짜야
동작시간이 빨라진다.
728x90