[백준 2439 node.js] 별찍기2

Jessie H·2022년 6월 15일
0

알고리즘 공부

목록 보기
10/20
post-thumbnail

백준 2439



풀이

for 문

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ');
const N = +Number(input[0]);
let result = '';

for(let i = 0; i < N; i++) {
  let star = '';
  
  for(let j = N-1; j >= 0; j--){
    if( j <= i){
       star += '*'
    } else {
       star += ' ';
      }  
  }
  result += star + '\n';
}

console.log(result);

repeat

<script>
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ');
const N = +Number(input[0]);

let star = '';

for(let i = N-1; i >=0; i--){
  star += ' '.repeat(i) + '*'.repeat(N-i) + '\n';
}
console.log(star)
</script>

join

1번째 방법

<script>
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ');
const N = +Number(input[0]);

let star = ' '.repeat(N).split('');
// N이 5일 경우 -> star = [' ', ' ', ' ', ' ', ' ']
let result = '';

for(let i = N-1; i >= 0; i--) {
  star[i] = '*';
  result += star.join('') + '\n'
}

console.log(result);
</script>

2번째 방법

<script>
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ');
const N = +Number(input[0]);

let star = new Array(N).fill(' ');
// N이 5일 경우 -> star = [' ', ' ', ' ', ' ', ' ']
let result = '';

for(let i = N-1; i >= 0; i--) {
  star[i] = '*';
  result += star.join('') + '\n'
}

console.log(result);
</script>

둘이 차이는 star를 new Array로 새로운 배열을 만드느냐, split()을 활용해 따로 배열을 만드느냐의 차이다.

풀이 참고:
https://onelight-stay.tistory.com/426
https://ryulurala.tistory.com/249
https://gurtn.tistory.com/33



중요 문법 및 포인트

repeat()

문자열.repeat(반복횟수)형식으로 사용
문자열을 반복횟수만큼 반복한 값을 반환하는 메소드

const sth = 'a'.repeat(5);
console.log(sth);
// aaaaa

문법 내용 출처: https://www.codingfactory.net/10916

join()

괄호 안에 들어가는 문자를 기준으로 배열 내의 원소를 구분하고 합쳐서 출력
기본은 콤마로 구분

const a = [1,2,3];
console.log(a.join('/'))
// 1/2/3

join() -> 문자열 사이 , 있는채로 출력

const a = [1,2,3];
console.log(a.join());
// 1,2,3

join('') -> 문자열 간격이나 콤마없이 다닥다닥 붙어서 출력

const a = [1,2,3];
console.log(a.join('');
// 123

문법 내용 출처: https://www.codingfactory.net/10450


### split() ```string.split(문자열 자를 구분자, 최대 분할 갯수)``` * 구분자와 최대 분할 갯수는 필수 아님 문자열을 ```문자열 자를 구분자```를 기준으로 잘라```최대 분할 갯수```이하의 길이를 가진 배열로 문자열 저장하여 반환

" ".split() -> 문자열 전체를 하나의 원소로 합쳐서 배열로 반환

const a = " ".repeat(5).split();
console.log(a);
//[ '     ' ]반환

" ".split('') -> 원소별로(원소 하나하나가 " "가 됨) ,로 구분해서 담고 배열로 반환

const b = " ".repeat(5).split("");
console.log(b);
// [ ' ', ' ', ' ', ' ', ' ' ]

split(' '); -> 띄어쓰기 기준으로 문자열 분리하고 ,로 구분해서 담고 배열로 반환

const c = "a b c d ".split(" ");
console.log(c);

split('/') -> / 기준으로 문자열 분리하고 ,로 구분해서 담고 배열로 반환

const d = "a/b/c/d".split("/");
console.log(d);

문법 출처:
https://hianna.tistory.com/377


- 누적값 ```+=``` 사용
  • for( i = N(입력값) -1; i >= 0; i--) i 입력값부터 작아지는 것

  • 빈 값 하나 선언하고 출력할 거 빈 값에 누적시키고 출력(그냥 console.log 찍는 거 피함, for문에서 시간 초과 방지)

profile
코딩 공부 기록장

0개의 댓글