캐또's coding

2439 - 별 찍기 - 2 - node.js 본문

기초 공부/백준 문제 풀이

2439 - 별 찍기 - 2 - node.js

JS_K_coding 2022. 8. 15. 12:01

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

예제 입력 1 복사

5

예제 출력 1 복사

    *
   **
  ***
 ****
*****

출처

알고리즘 분류


이전 문제였던 별 찍기 문제의 반대 버전, 이전에는 단순히 별을 찍었었다면, 이번에는 오른쪽으로 정렬이 되어야 한다는 차이가 있다. 

 

const input = Number(require("fs").readFileSync("/dev/stdin").toString());
for (let i = 1; i <= input; i++) {
  console.log(`${" ".repeat(input - i)}${"*".repeat(i)}`);
}

 

python을 썼을 때는 문제를  엄청 쉽게 처리했던 기억이 있다. 그냥 공백 * input - i 이런 느낌으로 처리하고 반복문 돌때마다 i가 ++ 되기 때문에 알아서 공백이 작아지고, 별은 * i를 하면 하나씩 늘어나므로 알아서 되는 느낌이었다.

반면 node.js/javascript는 문자에 대해 곱하기가 안 먹는다. 결국 for문을 중첩해서 작성하는 등의 방법을 활용해야하는데, 다행이도 똑같은 생각을 한 사람들이 많아서인지, repeat()함수라는 것이 있었다. 곱하기와 같은 것인데, 반복하려는 것 뒤에 붙여서 어떤 규칙으로 반복시킬지 적용할 수 있다.

for문에서 i를 1부터 돌리게 되면 (만약 input이 5라면) input-i는 4부터 시작, i는 1부터 시작하므로 공백 4칸 별 1칸, 그 다음에는 공백 3칸 별 2칸 이렇게 진행되어 문제를 해결하게 된다.

'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글

10952 - A + B - 5 - node.js  (0) 2022.08.16
10871 - X보다 작은 수 - node.js  (0) 2022.08.16
2438 - 별 찍기 -1 - node.js  (0) 2022.08.15
11022 - A+B - 8 - node.js (30번째)  (0) 2022.08.15
11021 - A+B - 7 - node.js  (0) 2022.08.15
Comments