*Udemy의 "The Coding Interview Bootcamp: Algorithms + Data Structures" 강의에서 학습한 내용을 정리한 포스팅입니다.
*https://soldonii.github.io에서 작성한 글을 티스토리로 옮겨온 포스팅입니다.
*자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :)
지문
// Write a function that accepts a positive number N.
// The function should console log a step shape
// with N levels using the # character. Make sure the
// step has spaces on the right hand side!
// --- Examples
// steps(2)
// '# '
// '##'
// steps(3)
// '# '
// '## '
// '###'
// steps(4)
// '# '
// '## '
// '### '
// '####'
1번 풀이
1. row 안에서 for loop을 진행한다.
1-1. 한 줄을 의미하는 stair 를 빈 string으로 초기화한다.
1-2. column 안에서 for loop을 진행한다.
1-2-1. 만일 column이 row보다 작거나 같을 경우에는, stair에 #를 넣는다.
1-2-2. 그렇지 않을 경우에는 stair에 ‘ ‘을 넣는다.
2-1. stair 를 console.log한다.
function steps(n) {
for (let r = 0; r < n; r++) {
let stair = '';
for (let c = 0; c < n; c++) {
if (c <= r) {
stair += "#";
} else {
stair += ' ';
}
}
console.log(stair);
}
}
2번 풀이 : recursion을 활용
Recursion Tips
- Figure out the bare minimum pieces of information to represent your problem.
- Give reasonable defaults to the bare minimum pieces of info.
- Check the base case. Is there any work left to do? If not, return.
- Do some work. Call your function again, making sure the argument
- Always think you ‘base case’ before writing codes.
function steps(n, row = 0, stair = '') {
if (n === row) {
return;
}
if (n === stair.length) {
console.log(stair);
return steps(n, row + 1);
}
if (stair.length <= row) {
stair += '#';
} else {
stair += ' ';
}
steps(n, row, stair);
}
'Javascript 공부 > 알고리즘 풀이' 카테고리의 다른 글
자바스크립트 알고리즘(11) - matrix (0) | 2019.08.26 |
---|---|
자바스크립트 알고리즘(10) - fibonacci (0) | 2019.08.26 |
자바스크립트 알고리즘(8) - sentence capitalization (0) | 2019.08.26 |
자바스크립트 알고리즘(7) - reverseString (0) | 2019.08.26 |
자바스크립트 알고리즘(6) - reverseInt (0) | 2019.08.26 |
댓글