프로젝트 & 실습/실습 & 평가 등
[실습] 별 그리기
hhyyyjun
2022. 12. 31. 23:35
입력 값 3을 받아
*
***
*****
위와 같은 값의 별 그리기
1 미만의 값을 입력 받으면 다시 입력하도록 해야한다.
디버깅표

값 3이 입력 되었을 때 각 조건에 따라 별이 찍힐 수 있도록 조건식을 만들어보았다. 이를 코드에 적용
내가 작성한 코드
package test;
import java.util.Scanner; //import
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //입력을 위한 함수
System.out.print("값을 입력하세요 : ");
while(true) { //조건식이 항상 참으로써 무한루프 발생
int num = sc.nextInt(); //정수 값 입력
if(num<1) { //만약 입력 값 num이 1 미만일 때
System.out.println("입력 값 1 이상으로 입력해주세요!");
continue; //값을 1 미만으로 입력했을 때 다시 while문 상단으로 이동
}
else if(num>=1) { //정수 값을 1이상으로 입력했을 때 명령 수행
for(int i = 1;i<=num;i++) { //i가 입력 값 num이하까지 반복 명령 수행
for(int j = 1;j<i*2;j++) { //j가 i*2까지 반복 명령 수행
for(int k=1;k<=num-i*j;k++) { //k가 num-i*j까지 반복 명령 수행
System.out.print(" ");
}
System.out.print("*");
}
System.out.println(); //줄바꿈
}break; //명령 수행 반복 후 루프 탈출
}
}
}
}

결과 값이 잘 나온 것을 확인할 수 있다.
하지만, 더 큰 값을 입력했을 때도 결과가 잘 나오는지 확인해보았다.

사진과 같이 값이 5가 넘어가는 순간 조건식에 오류가 있음을 알게되었다.
정답 풀이

3중첩 반복문이 아닌 2중첩에 병렬로 for문이 배치된 것을 확인하였고, 병렬 첫 for문에서 먼저 조건식에 따라 내가 입력한 값 이하까지 공백이 입력되도록 하였고,
병렬 두번째 for문에서 (2*i)-1 조건식을 통해 별이 2개씩 늘어나도록 하였다.