728x90
반응형
References
아래 링크의 강의 중 Section 11. Printing Steps의 내용을 추려 이번 글을 작성하였습니다.
The Coding Interview Bootcamp: Algorithms + Data Structures on Udemy
Solution 1. my solution
function steps(n) {
let star = "";
let space = "";
for (let i = 1; i <= n; ++i) {
star += "*";
for (let j = n - i; j > 0; --j) {
space += " ";
}
console.log(star + space);
space = "";
}
}
steps(5);
for문 i로 n만큼 행을 만들고, for문 j로 열을 만든다. for문 i를 돌면서 star를 하나씩 증가시켜 나가고, for문 j를 돌면서 공백을 추가하여 둘을 합친 값을 반환한다.
Solution 2. for loop with if
function steps(n) {
for (let row = 0; row < n; ++row) {
let stair = "";
for (let col = 0; col < n; ++col) {
if (col <= row) {
stair += "*";
} else {
stair += " ";
}
}
console.log(stair);
}
}
steps(5);

for문 row로 n만큼 행을 만들고, for문 col로 n만큼 열을 만든다. col이 row보다 작거나 같다면 stair에 *을 추가하고, 크다면 공백을 추가한다.
Solution 3. recursive function
function steps(n, row = 0, stair = "") {
// base case. it is the most important to set correct base case.
if (n === row) {
return;
}
if (n === stair.length) {
console.log(stair);
return steps(n, row + 1);
}
const add = stair.length <= row ? "*" : " ";
steps(n, row, stair + add);
// if (stair.length <= row) {
// stair += "*";
// } else {
// stair += " ";
// }
// steps(n, row, stair);
}
steps(5);
steps of recursive function
step.1
1-1. steps(5, row = 0, stair = "#")
1-2. steps(5, row = 0, stair = "#-")
1-3. steps(5, row = 0, stair = "#--")
1-4. steps(5, row = 0, stair = "#---")
1-5. steps(5, row = 0, stair = "#----") → 이 단계에서 stair.length(5)와 n(5)이 같으므로 row + 1- step.2
2-1. steps(5, row = 1, stair = "#")
2-2. steps(5, row = 1, stair = "##")
2-3. steps(5, row = 1, stair = "##-")
2-4. steps(5, row = 1, stair = "##--")
2-5. steps(5, row = 1, stair = "##---")
...step.3 ~ step.5
- step5까지 돌고 각 단계의 마지막 줄을 console.log로 stair 한 줄씩 출력.
- step.2
728x90
반응형
'👩💻 Programming > Coding Test 문제 풀이' 카테고리의 다른 글
| 모음 찾기(Find The Vowels) (0) | 2022.04.04 |
|---|---|
| 피라미드(Pyramids) (0) | 2022.04.04 |
| 첫 글자 대문자로 만들기(Sentence Capitalization) (0) | 2022.04.04 |
| 애너그램(Anagrams) (0) | 2022.04.04 |
| 배열 잘라내기(Array Chunking) (0) | 2022.04.04 |
댓글