열심히 끝까지

[능력 단위 평가] - 6/9 문제 코딩 + 다른 팀 문제 코딩 본문

디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(과제)

[능력 단위 평가] - 6/9 문제 코딩 + 다른 팀 문제 코딩

노유림 2022. 6. 17. 12:39

[3]
입력 : 3
  *  
 ***
*****
[2]
    *
   **
  ***
 ****
*****
[1]
*****
 ****
  ***
   **
    *

[ex]
입력 : 0
다시!
입력 : -1
다시!
입력: 1
*

package test;

import java.util.Scanner;

public class Test {
       public static void main(String[] args) {
       // [3]번 문제
       // 출석번호 10번 노유림

              Scanner sc = new Scanner(System.in);

              int a = 0; // 아래 for문에서도 쓰임(scope 범위), while문 위에
             while(true) { // 계속 반복
                   System.out.print("입력 : ");
                    a = sc.nextInt(); // a의 값 입력
                     if(a>0) { // a값이 0보다 크면 while문 밖으로
                          break; 
                     }
                    System.out.println("다시!"); // a가 0보다 작거나 같을 경우 다시 while문 반복
               }
              for(int i = 1; i<= a; i++) { // 입력한 a값만큼 반복한다(라인)
                    for(int j = 1; j<=a-i ; j++) { // *의 앞에 공백을 만들기 위한 반복
                          System.out.print(" ");
                     }
                   for(int  k = 1; k<=(i*2)-1 ; k++) { // *을 찍기 위한 반복
                           System.out.print("*");
                     }
                    System.out.println(); // 줄 바꾸기
             }
       }
}


디버깅표(if a = 3일 경우)(+는 공백)
a      for문      i       i<=a        j       j<=?              k        k<=?
---------------------------------------------------------------------------
-1       F
0        F
3        T         1        T          1         T        +       
                                           2         T        +
                                           3         F                 1           T         *
                                                                         2           F              
                    2         T          1         T        +
                                           2         F                 1           T         *
                                                                         2           T         *
                                                                         3           T         *
                                                                         4           F
                    3         T          1         F                1           T          *
                                                                        2           T         *
                                                                        3           T         *
                                                                        4           T         * 
                                                                        5           T         *  
                                                                        6           F          
                    4          F    
          
j + i <= 3
==> 결론 : j<= a - i

k <= i*2-1
==> 결론 : k <= i*2 -1

Test[1]
package test;

import java.util.Scanner;

public class Test02 {
       public static void main(String[] args) {
             Scanner sc = new Scanner(System.in);

             int a = 0; 
             while(true) { 
                   System.out.print("입력 : ");
                    a = sc.nextInt(); 
                   if(a>0) { 
                         break; 
                   }
                   System.out.println("다시!"); 
             }       

             for(int i = 1; i <= a; i++) {
                   for(int j = 1; j <= i-1; j++) {
                         System.out.print(" ");
                   }
                   for(int k = 1; k <= (a+1)-i; k++) {
                         System.out.print("*");
                   }
                   System.out.println();
             }
       }
}

디버깅표(a = 5 일때)
i        i<=a        j          j<=i-1               k       k<=(a+1)-i
---------------------------------------------------------------------
1         T          1            F                    1             T           *
                                                           2             T           *
                                                           3             T           *
                                                           4             T           *
                                                           5             T           *
                                                           6             F           
2         T           1            T          +
                        2            F                    1             T           *
                                                           2             T           *
                                                           3             T           *
                                                           4             T           *
                                                           5             F 
3         T           1            T          +
                        2            T          +
                        3            F                    1             T           *
                                                           2             T           *
                                                           3             T           *
                                                           4             F         
4         T           1            T          +
                        2            T          +
                        3            T          +
                        4            F                    1             T           *
                                                            2             T           *
                                                            3             F
5         T           1            T          +
                        2            T          +
                        3            T          +
                        4            T          +
                        5            F                    1             T           *
                                                            2             F
6         F
                       


--------------------------------------------------------------------------------------------

Test[2]
package test;

import java.util.Scanner;

public class Test01 {
       public static void main(String[] args) {
             Scanner sc = new Scanner(System.in);

             int a = 0; 
             while(true) { 
                   System.out.print("입력 : ");
                   a = sc.nextInt(); 
                   if(a>0) { 
                         break; 
                   }
                   System.out.println("다시!"); 
             }

             for(int i = 1; i <= a; i++) {
                   for(int j = 1; j<=a-i; j++) {
                         System.out.print(" ");
                   }
                   for(int k = 1; k<=i; k++) {
                         System.out.print("*");
                   }
                   System.out.println();
             }
       }
}

디버깅표(a = 5일때)
i        i<=a        j          j<=a-i               k       k<=i
---------------------------------------------------------------------
1          T          1             T         +    
                        2             T         +
                        3             T         +
                        4             T         +
                        5             F                   1          T       *
                                                            2          F        
2          T          1             T         +      
                        2             T         +
                        3             T         +
                        4             F                   1          T        *
                                                            2          T        *
                                                            3          F     
3          T          1             T         +      
                        2             T         +
                        3             F                   1          T        *
                                                            2          T        *
                                                            3          T        *
                                                            4          F
4          T          1             T         +      
                        2             F                   1          T        *
                                                            2          T        *
                                                            3          T        *
                                                            4          T        *
                                                            5          F
5          T          1             F                   1          T        *
                                                            2          T        *
                                                            3          T        *
                                                            4          T        *
                                                            5          T        *
                                                            6          F
6          F