[백준 | Javascript] 2439

박기영·2022년 5월 16일
0

백준

목록 보기
30/127

반복문 10단계
2439번. 별 찍기-2

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

예제 입출력

예제 입력

5

예제 출력

아래 그림을 오른쪽 정렬된 형태로 만들기.
*
**
***
****
*****

solution 1

const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString();

const num = Number(inputData);
let result = '';

// repeat()로 문자열을 반복시켜서 할당한 뒤 매 반복마다 출력
for(let i = 1; i <= num; i++){
	result = ' '.repeat(num - i) + '*'.repeat(i);
  	console.log(result);
}

solution 2

const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString();

const num = Number(inputData);
// ' '으로 채운 num개의 원소를 가지는 배열을 생성
let result = new Array(num).fill(' '); // [' ', ' ', ' ', ' ', ' ']

for(let i = num - 1; i >= 0; i--){
  	// 배열 끝에서부터 * 할당
	result[i] = '*';
  	// join()으로 띄어쓰기없이 배열 내 원소들을 출력
  	console.log(result.join(''));
}

solution 3

const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString();

const num = Number(inputData);

for (let i = 0; i < num; i++) {
  let result = '';
  for (let j = num - 1; j >= 0; j--) {
    // 삼항연산자 활용
    // j가 i보다 작거나 같다면 *를 할당, 아니면 공백을 할당
    result += j <= i ? '*' : ' ';
  }
  console.log(result);
}

해설

이 문제도 풀이가 굉장히 다양하다.
주석을 잘 읽어보자.
3번 해답은 찾아보고서 충격받았다...저런 생각을 할 수도 있구나..
참고 사이트

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글