본문 바로가기
프로그래밍/Java

[자바] 별찍기 이등변삼각형(이중for문)(+알고리즘) -6

by 청량리 물냉면 2019. 7. 14.
반응형
문제

별찍기(6) (이등변삼각형)

 

*
**
***
****
*****
******
*******
********
*********
**********
*********
********
*******
******
*****
****
***
**
*

 

for문(반복문)을 사용해 위 모양을 출력해보자 (10번째 줄에 별 10개)

 

실행화면

 

코드
public class star6 {
	public static void main(String[] args) {
		
		int k = 0; //라인 수를 담당한다. 라인 수에 따른 i의 변화를 나타내게 도와준다.
		for(int j = 1; j<21; j++) {
			
			for (int i = 0; i<=k; i++) { //i는 k를 이용해 *의 갯수를 조절한다.
				System.out.printf("*");			
			}
			System.out.printf("\n");
			if (j<10) //10번째 줄까지는 후위증가
				k++;
			else //10번째 줄 이후로는 후위감소
				k--;
		}
	}
}

 

코드 설명

기본이 되는 코드는 

 

*

**

***

****

*****

******

*******

********

*********

********** ← 이 코드.

 

라인을 지정해두고, 그 라인을 기준으로 별의 갯수가 달라져야 한다. 이 문제에서는 10번째 라인을 지정했고, 10번째 라인을 기점으로 10번 째 라인 이전에는 별의 개수가 하나씩 증가, 이후로는 별의 개수가 하나씩 줄어든다. 

줄수에 따라 * 의 개수가 변화해야 하므로 줄수담당변수 k를 이용하여 i의 조건을 조절해 보자.

 

j = 1 일때 i = 0, 1, 2, 3, 4...  k=0 (i보다 k가 크거나 같을 때 * 찍힘)

i = 0일때 한번 찍힘

j =2 일 때 i = 0, 1, 2, 3, 4...  k=1 (k++)

i = 0, 1일때 찍힘

.

.

.

j = 10일 때 i = 0, 1, 2, 3, 4...  k=9 (k++ 마지막)

→ i = 0, 1, 2, 3, 4, ...., 9일때 찍힘

j = 11일 때 i = 0, 1, 2, 3, 4...  k=10 (k--시작)

→  i = 0, 1, 2, 3, 4, ...., 9, 10일때 찍힘

j = 12일 때 i = 0, 1, 2, 3, 4...  k=9 (k--)

i =  0, 1, 2, 3, 4, ...., 9일때 찍힘

.

.

j = 20일 때 i = 0, 1, 2, 3, 4...  k=0

→ i = 0 일때 찍힘 

 

반응형