본문 바로가기

Java

[Java] 반복문(for문), 별 찍기 예제 풀이

반복문

for(초기식; 조건식; 증감식;) {

     조건식이 참일 동안 실행할 실행문;

};

 

[예제]

for(int i=0; i<10; i++){
	System.out.print("i");
}
// 0123456789

for(int i=1; i<10; i++){
	System.out.print("i");
}
//123456789

for(int i=10; i>0; i--){
	System.out.print("i");
}
//10987654321

 

 

문제 : 1부터 10까지의 합 구하기

int sum=0;

for(i=1; i<=10; i++){
	sum+=sum;
}
System.out.print(sum);
// 55

 

 

※ 반복문 안에 sum 변수를 사용하기 전에는 변수 선언과 초기화를 해야 한다.

 


별 찍기 예제

 

1) 왼쪽 정렬 삼각형

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

2) 오른쪽 정렬 삼각형

for(int i=1; i<6; i++){
    for(int j=5; j>0; j--){
        if(i>=j){
            System.out.print("*");
        }else{
            System.out.print(" ");
        }   
    }
    System.out.println("");
}

3) 왼쪽 정렬 역삼각형

for(int i=1; i<6; i++){
    for(int j=5; j>0; j--){
        if(i<=j){
            System.out.print("*");
        }else{
            System.out.print(" ");
        }   
    }
    System.out.println("");
}

4) 오른쪽 정렬 역삼각형

for(int i=1; i<6; i++){
    for(int j=1; j<6; j++){
        if(i<=j){
            System.out.print("*");
        }else{
            System.out.print(" ");
        }   
    }
    System.out.println("");
}

5) 트리

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

[풀이]

i=1)  j=1,2,3에 공백( )  j=4에 별(*)

i=2)  j=1,2에 공백( )  j=3,4,5에 별(*)

i=3)  j=1에 공백( )  j=2,3,4,5,6에 별(*)

i=4)  j=1,2,3,4,5,6,7에 별(*)

 

공백 규칙 찾기 : (4-i)개

3 - 2 - 1

별 찍기 규칙 : (2*i-1)개

1 - 3 - 5 - 7

 


6) 역트리

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

 


 

7) 마름모

위에 트리, 역트리 별찍기를 이용해서 마름모 별찍기도 가능하다.

참고로 마름모는 홀수개의 i행을 가진다.

//위
for(int i=1; i<=3; i++){

    if(i<=2){
        for(int j=1; j<=3-i; j++){
            System.out.print(" ");
        }
        for(int j=1; j<=2*i-1; j++){
            System.out.print("*");
        }
    }else{
        for(int j=1; j<=2*i-1; j++){
            System.out.print("*");
        }
    }
    System.out.println("");
}

// 아래
for(int i=2; i>=1; i--){
    for(int j=1; j<=3-i; j++){
        System.out.print(" ");
    }
    for(int j=1; j<=2*i-1; j++){
        System.out.print("*");
    }
    System.out.println("");
}

8) 마름모 응용

int num;
Scanner scn = new Scanner(System.in);
num = scn.nextInt();

for(int i=1; i<=num/2+1; i++){

    if(i<=num/2){
        for(int j=1; j<=num/2+1-i; j++){
            System.out.print(" ");
        }
        for(int j=1; j<=2*i-1; j++){
            System.out.print("*");
        }
    }
    else{
        for(int j=1; j<=2*i-1; j++){
            System.out.print("*");
        }
    }
    System.out.println("");
}

for(int i=num/2; i>=1; i--){
    for(int j=1; j<=num/2+1-i; j++){
        
        System.out.print(" ");
    }
    for(int j=1; j<=2*i-1; j++){
        System.out.print("*");
    }
    System.out.println("");
}

마름모 (행/2)까지는 트리, (행/2)부터 마름모의 행까지는 역트리로 코드를 작성하면 된다.

ex) 7행 마름모는 3행까지 트리, 4행부터 7행까지는 역트리