본문 바로가기

Java

별을 프린트해서 삼각형 모양 만들기

반응형

*을 프린트해서 삼각형 모양 만들기

  • 반복문인 for문을 사용한다면?
  • 첫루프에서 공백이 출력되는 개수와 *이 출력되는 개수를 조절하면, 다양한 삼각형 모양을 만들 수 있다.

 

설계하기

  • for문을 통해서 변수 i가 증가함에 따라 출력되는 줄(행)의 개수도 늘어나도록 설계
    • 반복횟수가 곧 줄의 개수
    • i가 증가하기 전에 줄을 바꾸기
for(int =i; i < 5; i++) {
     //실행문
}
System.out.println(); // 줄 바꾸기
  • for문 안에 또 for문을 넣어서 한 줄 안에서도 반복을 통한 프린트 출력 (이중루프)
    • 공백을 출력하기 위한 for문
    • *을 출력하기 위한 for문

 

삼각형 만들기

1. 직각 삼각형

직각삼각형
출력 결과

 

for(int i = 0; i < 5; i++){ // 5줄 만들기 (루프 5번)

/* i는 고정, j는 루프
 * i=0일 때: j=0 (1번 실행)
 * i=1일 때: j=0, 1 (2번 실행)
 * i=2일 때: j=0, 1, 2 (3번 실행)
 * i=3일 때: j=0, 1, 2, 3 (4번 실행)
 * i=4일 때: j=0, 1, 2, 3, 4 (5번 실행)
 */
     for(int j = 0; j <= i; j++){
          System.out.print("*"); // *을 출력, 줄 바꾸지 않고 한 줄에 출력 위해 print 이용(루프를 통해 한 줄에 출력되는 *의 개수 누적)
      }
System.out.println(); // i가 하나 끝나면, 줄을 바꿔서(println) 다음 행을 출력할 준비하기
}

 

2. 역직각삼각형

역직각삼각형
출력 결과

for(int i = 0; i < 5; i++){ // 5줄 만들기 (루프 5번)

 /* i는 고정, j는 루프

  * i=0일 때: 조건 만족X (0번 실행)
  * i=1일 때: j=0 (1번 실행)
  * i=2일 때: j=0, 1 (2번 실행)
  * i=3일 때: j=0, 1, 2 (3번 실행)
  * i=4일 때: j=0, 1, 2, 3 (4번 실행)
  */
      for(int j = 0; j < i; j++){ // j < i 로 < 을 사용함으로써 i=0일 때는 출력이 안되도록
           System.out.print(" "); // 공백을 출력, 줄 바꾸지 않고 한 줄에 출력 위해 print 이용(루프를 통해 한 줄에 출력되는 공백의 개수 누적)
       }

  /* i는 고정, k는 루프
   * i=0일 때: k=0, 1, 2, 3, 4 (5번 실행)
   * i=1일 때: k=0, 1, 2, 3 (4번 실행)
   * i=2일 때: k=0, 1, 2 (3번 실행)
   * i=3일 때: k=0, 1 (2번 실행)
   * i=4일 때: k=0 (1번 실행)
   */
        for(int k = 0; k < (5 - i); k++){ // k < (5-i)로 조건을 주어 개수가 역으로 나오도록
             System.out.print("*"); // *을 출력, 줄 바꾸지 않고 한 줄에 출력 위해 print 이용(루프를 통해 한 줄에 출력되는 *의 개수 누적)
         }
  System.out.println(); // i가 하나 끝나면, 줄을 바꿔서(println) 다음 행을 출력할 준비하기
}

 

3. 피라미드 

피라미드
출력 결과

for(int i = 0; i < 5; i++){ // 5줄 만들기 (루프 5번)
 
  /* i는 고정, k는 루프
   * i=0일 때: k=0, 1, 2, 3 (4번 실행)
   * i=1일 때: k=0, 1, 2 (3번 실행)
   * i=2일 때: k=0, 1 (2번 실행)
   * i=3일 때: k=0 (1번 실행)
   * i=4일 때: 조건 만족X (0번 실행) -> 공백 여부 결정
   */
      for(int k = 0; k < (5 - i-1); k++){
           System.out.print(" "); // 공백을 출력, 줄 바꾸지 않고 한 줄에 출력 위해 print 이용(루프를 통해 한 줄에 출력되는 공백의 개수 누적)
       }


  /* i는 고정, j는 루프
   * i=0일 때: j=0 (1번 실행)
   * i=1일 때: j=0, 1, 2 (3번 실행)
   * i=2일 때: j=0, 1, 2, 3, 4 (5번 실행)
   * i=3일 때: j=0, 1, 2, 3, 4, 5, 6 (7번 실행)
   * i=4일 때: j=0, 1, 2, 3, 4, 5, 6, 7, 8 (9번 실행)
   */
        for(int j = 0; j < (2*i+1); j++){
             System.out.print("*"); // *을 출력, 줄 바꾸지 않고 한 줄에 출력 위해 print 이용(루프를 통해 한 줄에 출력되는 *의 개수 누적)
         }

System.out.println(); // i가 하나 끝나면, 줄을 바꿔서(println) 다음 행을 출력할 준비하기
}

 

4. 역피라미드

역피라미드
출력 결과

for(int i = 0; i < 5; i++){ // 5줄 만들기 (루프 5번)

  /* i는 고정, k는 루프

   * i=0일 때: 조건 만족X (0번 실행)
   * i=1일 때: k=0 (1번 실행)
   * i=2일 때: k=0, 1 (2번 실행)
   * i=3일 때: k=0, 1, 2 (3번 실행)
   * i=4일 때: k=0, 1, 2, 3 (4번 실행)
   */
       for(int k = 0; k < i; k++){
            System.out.print(" "); // 공백을 출력, 줄 바꾸지 않고 한 줄에 출력 위해 print 이용(루프를 통해 한 줄에 출력되는 공백의 개수 누적)
        }

  /* i는 고정, j는 루프
   * i=0일 때: j=0, 1, 2, 3, 4, 5, 6, 7, 8 (9번 실행)
   * i=1일 때: j=0, 1, 2, 3, 4, 5, 6 (7번 실행)
   * i=2일 때: j=0, 1, 2, 3, 4 (5번 실행)
   * i=3일 때: j=0, 1, 2 (3번 실행)
   * i=4일 때: j=0 (1번 실행)
   */
         for(int j = 0; j < 2*(5-i)-1; j++){
              System.out.print("*"); // *을 출력, 줄 바꾸지 않고 한 줄에 출력 위해 print 이용(루프를 통해 한 줄에 출력되는 *의 개수 누적)
         }
    System.out.println(); // i가 하나 끝나면, 줄을 바꿔서(println) 다음 행을 출력할 준비하기
}

 

이와 같이 반복문의 조건과 공백을 먼저 프린트할지, 별표(*)를 먼저 프린트할지에 따라서 모양을 다르게 만들 수 있습니다.

조건의 식을 통해서 반복되는 횟수를 조정하는 것을 생각하면 됩니다.

반응형