기타

별찍기 with 숫자

swchung09 2025. 5. 26. 00:19

이 문제는 트리형 별찍기 문제에 index를 결합한 별찍기 문제이다. 예시는 다음과 같다.

       1

      121

    12321

  1234321

123454321


이 문제는 3가지 부분으로 나눌 수 있다.

메인 반복문(현재 줄을 나타낼 수 있다)

메인 반복문 내의 공백 추가 반복문

메인 반복문 내의 숫자 출력 반복문

다만 console.log에서는 줄바꿈이 기본이라서 text에 임시로 저장하고 줄바꿈이 필요할때 출력하는 방식을 사용하였다.


메인 반복문

for (let i = 1; i <= n; i++){
    let text = '';
    for (let j = 0; j < n-i; j++){//공백 추가
        text += ' ';
    }
    for (let j = 0; j < (2*i)-1; j++){//숫자 출력
        if (j < ((2*i)-1)/2){
            text += j+1;
        }else {
            text += ((2*i)-1)-j;
        }
    }
    console.log(text);
}

 

숫자 출력에서 사용된 j < ((2*i)-1)/2 조건은 반복의 절반은 숫자가 증가하고, 나머지 절반은 숫자가 감소하는 방향으로 저장하기 위해 사용되었다.


최종 코드

let n = 5;
for (let i = 1; i <= n; i++){
    let text = '';
    for (let j = 0; j < n-i; j++){
        text += ' ';
    }
    for (let j = 0; j < (2*i)-1; j++){
        if (j < ((2*i)-1)/2){
            text += j+1;
        }else {
            text += ((2*i)-1)-j;
        }
    }
    console.log(text);
}

'기타' 카테고리의 다른 글

연속된 수를 더해서 n이 되는 경우의 수  (0) 2025.05.26
뒤집어도 같은 숫자  (0) 2025.05.26
별찍기  (0) 2025.05.26
우분투, SSH  (0) 2025.05.14
Git, Github  (3) 2025.05.07