[백준 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의 현실이다. ㅎㅎ
Author And Source
이 문제에 관하여([백준 2439번 별 찍기 - 2]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yellow_ing/백준-2439번-별-찍기-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)