영어에 익숙해 지기 위해 겸사겸사 해커랭크에서 알고리즘 문제를 풀어보고 있다. (아직 몇 문제 안풀었지만..)
재미삼아 풀어보다가 익숙치 않거나 공부가 필요한 문제들은 종종 정리해보려고 합니다.
문제
Write a program that prints a staircase of size n.
주어진 숫자 n의 수 만큼 가로와 세로가 #으로 채워진 형태를 출력하시오.
조건 : n은 정수 / 0 < n ≤ 100
Sample Input
4
Sample Output
#
##
###
####
어떤 값을 리턴하는 것에는 익숙한데, 이런식으로 콘솔에 프린트 하라는 문제는 아직 익숙하지가 않은 것 같다.
숫자를 배열로 만들어야 할지, 다른 방법이 있을지 판단이 안섰음.
풀고 보니 어려운 코드가 아닌데 처음에 고민을 많이 했다.
풀이
숫자 n개 만큼의 요소를 가지고 있는 배열을 생성하고, 반복문을 실행하면서 요소 중 일부를 #으로 변경해 콘솔에 프린트 한다.
1. fill() 메서드를 활용. Array(요소의 수), fill(채울 값) 으로 작성.
- 이때 값은 필요가 없으므로 fill(' ')이 되는데,
- fill('') 이 아니라 fill(' ') 이어야 하는 이유는 마지막에 join()할 때 빈 자리값을 유지해야 하기 때문. 안그럼 #이 다 왼쪽으로 붙어요.
Array(3).fill(' '); // [' ', ' ', ' ']
2. 빈 값을 오른쪽 부터 #으로 채워야 하기 때문에 반복문을 n - 1 부터 거꾸로 실행한다.
- 실행할 때 마다 arr.join('') 으로 콘솔에 출력.
function staircase(n) {
let arr = Array(n).fill(' ');
for(let i = n - 1; i >= 0; i--) {
arr[i] = '#';
console.log(arr.join(''));
}
}
배운점
빈 배열과 반복문을 활용해 특정한 패턴을 출력하는 방법을 알았다.
한번 푼 건 제대로 알자.
화이팅.
:-)
'Coding > Algorithms' 카테고리의 다른 글
[JavaScript] Time conversion: 시간 변환 (0) | 2019.11.22 |
---|---|
[JavaScript] 피보나치 수 구하기 (0) | 2019.11.20 |