[백준 2439번 별 찍기 - 2]

JS에서 배열을 원하는 길이로 만드는 법


오류 : js에서는 파이썬 배열 만들기 방식이 안통한다?!


파이썬에서 했던 방식으로 array = [" "] * 3 을 했는데 자바스크립트에서는 이렇게 해당 함수의 splice가 함수가 아니다. 라는 오류가 나왔다.


해결 : Array.from({length:n},(v,i)=> ~)

해당 메소드를 이용해 원하는 길이 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}`);
}

추가 : 문자열을 배열로 변환 가능

아마 다른 문제 풀 때, 유용할 듯!


사실 나는 배열을 [ ]*n 으로 만들고 싶다...

파이썬에서는 다음이 가능하다.

-위 이미지 블로그 https://application-s.tistory.com/42


js의 현실이다. ㅎㅎ

좋은 웹페이지 즐겨찾기