해당 메소드를 이용해 원하는 길이 n만큼의 배열을 ~자리에 값으로 들어갈 것을 만들어서 만들 수 있다.
나는 문제에서 별찍기(2) 문제였기 때문에 빈 공백이 필요해서
let answer = Array.from({length:n}, (v) => " ")
로 배열을 만들었다.
이렇게 만들고 나서 splice를 이용해 해당 자리 하나씩 *로 바꾸는 작업을 하였다.
배열.splice( 해당 인덱스, 몇 개를 바꿀지, 어떤 것으로 바꿀지)
따라서 나는 입력된 n을 이용하되, 인덱스의 시작은 0이기 때문에 n=5이라면
for(i= +n-1; i>=0; i--) 로 반복문을 돌렸다.
여기서 i>=0을 한 이유는, 반복문의 끝에선 i>0으로 한 경우 반복문이 n=4,3,2,1로 4번만 돌아간다. 해당 조건을 만족하지않으면 반복문이 종료되기 때문이다.
이런 식으로, 인덱스 0번째가 출력되지 않는 모습을 볼 수 있다.
전체 코드는 다음과 같다.
const n = require("fs").readFileSync("/dev/stdin").toString();
// const n = 5;
let answer = Array.from({ length: n }, (v) => " ");
for (i = +n - 1; i > 0; i--) {
answer.splice(i, 1, "*");
console.log(answer.join(""));
console.log(`i의 값은 ${i}`);
}
아마 다른 문제 풀 때, 유용할 듯!
파이썬에서는 다음이 가능하다.
-위 이미지 블로그 https://application-s.tistory.com/42