본문 바로가기

Coding/Algorithms

[JavaScript] Staircase

영어에 익숙해 지기 위해 겸사겸사 해커랭크에서 알고리즘 문제를 풀어보고 있다. (아직 몇 문제 안풀었지만..)

재미삼아 풀어보다가 익숙치 않거나 공부가 필요한 문제들은 종종 정리해보려고 합니다.

 

 


문제 

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