프로그래밍/기타

대각선 모양으로 별 출력하는 PHP 코드 작성하기

knxwledge 2025. 3. 1. 18:08

개요

PHP로 이중 for문의 대표적인 예제인 대각선 모양 별 찍기를 하는 법을 알아보자.

 

 

위와 같이 1행에는 별 1개, 2행에는 별 2개,..., n행에는 별 n개를 출력하는 코드를 써 볼 것이다.

 

수정 (20250312): '개요' 소제목 추가


1. 별 n개 출력하기

일단 변수 n에 대해 별 n개를 출력하는 코드를 생각해 본다. 그런 코드는 다음과 같다. 

for($i=1; $i<=$n; $i++){
    echo "*";
}

 

i를 1에서부터 n까지 1씩 증가시키는데, 그때마다 별 한개를 찍는다.

 

n에 3을 대입한 뒤 프로그램을 실행하면 별 세 개가 찍히는 것을 확인할 수 있다. (프로그램 실행은 이 사이트에서 했다.)

<?php
    $n=3;
    for($i=1; $i<=$n; $i++){
        echo "*";
    }
?>

2. 대각선 모양으로 별 출력하기: 5줄

 

위 그림을 관찰하면 n을 1에서 5까지 증가시키며 별을 n개 출력했다는 것을 알 수 있다. 이를 의사코드로 표현하면 다음과 같다.

for ($n=1;$n<=5;$n++){
    // 별 n개 출력하기
    // 줄 바꾸기
}

 

별 n개를 출력하는 코드는 이미 만들어 놓았기 때문에 "// 별 n개 출력하기"라고 쓰여 있는 부분에 해당 코드를 넣으면 된다. 그 후 줄빠꿈을 하는 코드를 추가시킨다.

for($n=1; $n<=5; $n++){
    for($i=1; $i<=$n; $i++){
        echo "*";
    }
    echo "\n";   //줄바꿈
}

 

위 코드를 실행시키면 원하는 결과가 나오는 것을 확인할 수 있다.


3. 대각선 모양으로 별 출력하기: n줄

이제 n을 변수로 두고 1행부터 n행까지 대각선으로 별을 출력하는 함수를 만들어 보자. 

 

일단 코드에서 변수 이름을 바꾼다. 

for($i=1; $i<=5; $i++){
    for($j=1; $j<=$i; $j++){
        echo "*";
    }
    echo "\n";
}

 

n으로 불리던 변수를 i로 바꾸었고, i로 불리던 변수를 j로 바꾸었다. n이라는 변수는 다른 용도로 쓰기 위해서다.

 

위의 코드는 5행까지 별을 출력하는데, n행까지 별을 출력하려면 i의 상한선을 n으로 두면 된다. 그 결과는 다음과 같다.

for($i=1; $i<=$n; $i++){   // 바뀐 줄은 이 줄 밖에 없다.
    for($j=1; $j<=$i; $j++){
        echo "*";
    }
    echo "\n";
}

 

이를 n을 실행인자로 받는 함수 안에 넣으면, 1행부터 n행까지 대각선 모양으로 별을 출력하는 함수가 된다.

function print_stars($n){
    for($i=1; $i<=$n; $i++){
        for($j=1; $j<=$i; $j++){
            echo "*";
        }
        echo "\n";
    }
    return 0;
}

 

예시로 print_stars(10)을 실행시키면 10행까지 대각선 모양으로 별이 출력된다.

<?php
    function print_stars($n){
        for($i=1; $i<=$n; $i++){
            for($j=1; $j<=$i; $j++){
                echo "*";
            }
            echo "\n";
        }
        return 0;
    }
    print_stars(10);
?>