본문 바로가기
프로그래밍/백준 알고리즘

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

by 정빈e 2021. 7. 25.
728x90

출처: 백준

 

2439번: 별 찍기 - 2

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

www.acmicpc.net

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

입력

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

출력

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

예제 입력 1

5

예제 출력 1

    *

   **

  ***

 ****

*****

내 코드

 

풀이 1

const readline = require("readline");
const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
});

let input;

rl.on("line", function(line){
    input = line;
    rl.close();
}).on("close", function(){
    let count = input;
    let blanks;
    let stars;
    for(let i=0; i<count; i++){
        blanks = '';
        stars = '';
        for(let j=count; j>i+1; j--){
            blanks += ' ';
        }
        for(let k=0; k<=i; k++){
            stars += '*';
        }
        console.log(blanks+stars);
    }
    process.exit();
})

풀이 2
const readline = require("readline");
const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
});

let num;

rl.on("line", function(line){
    num = +line; // 5
    rl.close();
}).on("close", function(){
    let stars = '';
    for(let i=0; i<num; i++){  //  0, 1, 2, 3, 4
        for(let k=num-1; k>=0; k--){  //  4, 3, 2, 1, 0
            if(i<k) stars += ' ';
            else stars += '*';
        }
        stars += '\n';
    }

    console.log(stars);

    process.exit();
})

결과

> 5
    *
   **
  ***
 ****
*****

 

풀이 1에서는 각 라인을 담당하는 for문과 그 안에서 공백을 찍는 for문, *을 찍는 for문으로 반복문을 총 3번 사용했다.

 

풀이 2에서는 조금 다른 방식으로 해결했다. 반복문과 조건문을 같이 사용했다.

바깥쪽 for문은 별 N개까지의 라인을 담당하고 안쪽 for문은 해당 라인의 내용을 담당한다.

 

if문에 따라 i가 k보다 작으면 공백이 출력된다.

5가 입력됐을 경우 

 

○○○○★   안쪽 for문에서 4부터 0까지 반복한다. 공백을 찍다가 k가 0이 되어 i와 같아지면 *이 찍힌다.

○○○★★

○○★★★

○★★★★

★★★★★   i가 4이기 때문에 항상 k보다 크거나 같다. else에 따라 항상 *만 찍힌다.

 

 

 

 

728x90

댓글