위와 같은 형태의 모양으로 출력을 해보자.
for 문을 사용하여 위의 모양을 만드는 것이 이번에 할 내용.
1 for(int i=6; i>=2; i--){
2 for(int s=1; s<i; s++){
3 System.out.print("*");
4 }
5 System.out.println();
6 for(int k=6; k>i-1 && i>2; k--){
7 System.out.print(" ");
8 }
9 }
생각에 따라서는 어렵게 느껴질 수도 있는 문제이다.
해당 모습을 만드는 것에는 위의 방법과는 다르게 여러가지가 있을 수 있다.
해설...
1번째 줄
첫번째 for문 6에서 2까지 1씩 감소시키며 총 5회 반복한다.
: 5개의 줄을 만들 것이므로 총 5회 반복하도록 한다.
2번째 줄
내부 1번째 for문 1부터 i보다 작을 때까지 1씩 증가하며 *을 출력한다.
처음 시작시 i가 6이므로 1부터 5까지 총 5회 반복하며 *을 5개 출력한다.
5번째 줄
내부 1번째 for문이 종료되고 줄바꿈을 한다.
6번째 줄
내부 2번째 for문 초기값을 6으로 주고 6을 1씩 감소시키며 i-1만큼 반복한다.
그리고 i가 2보다 클때만 반복한다.
1회전
1. for문 s=1 < i=6, s++ => *이 5개 출력된다.
2. 줄바꿈을 한다.
3. for문 k=6 > i=6-1 & 6>2 k++ =>6부터 i까지 반복 6-1 은 5이므로 " "1회 반복 출력
2회전
1. for문 s=1 < i=5, s++ => *이 4회 출력
2. 줄바꿈
3. for문 k=6 > i=5-1 & 5>2 k++ =>6부터 i까지 반복 5-1은 4이므로 " "2회 반복 출력
3회전
1. for문 s=1 < i=4, s++ => *이 3회 출력
2. 줄바꿈
3. for문 k=6 > i=4-1 & 4>2 k++ =>6부터 i까지 반복 4-1은 3이므로 " "3회 반복 출력
......
5회전
1. for문 s=1 < i=2, s++ => *이 1회 출력
2. 줄바꿈
3. for문 k=6 > i=2-1 & 2>2 k++ => 1번 조건은 충족하나 2번 조건이 불충족이므로 반복하지 않고 끝낸다.
더 쉬운 방법도 있으리라 생각됩니다.^^
댓글 없음:
댓글 쓰기