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);
<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>
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(반복횟수)
형식으로 사용
문자열을 반복횟수만큼 반복한 값을 반환하는 메소드
const sth = 'a'.repeat(5);
console.log(sth);
// aaaaa
문법 내용 출처: https://www.codingfactory.net/10916
괄호 안에 들어가는 문자를 기준으로 배열 내의 원소를 구분하고 합쳐서 출력
기본은 콤마로 구분
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() -> 문자열 전체를 하나의 원소로 합쳐서 배열로 반환
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문에서 시간 초과 방지)