자바 프로그래밍 입문-연습문제#3

파핑·2022년 4월 2일
0
post-thumbnail

자바 연습문제 풀이3일차


Q반복문을 사용하여 다음 모양을 출력하는 프로그램을 만들어 보시오.

       *
      ***
     *****
    *******  
public static void main[String( )args] {
  for(int i=0; i<4; i++){
    for(int j=0; j<4-i;j++){
      system.out.printf(" ");
    }
    for(int j=0; j<1+i*2;j++){
      system.out.printf("*");
    }
    system.out.println( );
  }

반복문인 for문을 사용해 프로그램을 만들었다.
우선 크게 ①줄,②공백,③별로 나눠서 생각을 했다.

줄 수(i)공백(i)*(i) ㅤ
ㅤ031 ㅤ
ㅤ123 ㅤ
ㅤ215 ㅤ
ㅤ 307 ㅤ

가장 먼저 을 코드로 짜보자.
일단 줄은 표에서는 0부터 시작했지만 실제로는 4줄이다. 줄의 이름은 0부터 시작해 최종 숫자가 3으로 되어 있지만 실질적으로는 4줄이니 줄의 수가 4가 되기전까지 줄의 갯수를 더하도록 코드를 짰다.
for(int i=0; i<4; i++)
다음으로 공백을 살펴보자.
공백은 3에서부터 숫자가 1씩 줄어든다. i(한 줄씩 증가할수록)를 기준으로 조건문을 완성해보자.
위에서 가장 큰 공백의 숫자가 3이다. 3부터 시작해 2,1,0이 되려면 1씩 줄어야 피라미드를 완성 할 수 있다. 그러므로 j<3-i를 해주면 된다.
for(int j=0; j<3-i;j++)
은 표를 보면 2씩 늘어나는 것을 알 수 있다. 그럼 i를 기준으로 곱하기2를 하면 되는 것일까?
0,2,4,6
아쉽게도 1씩 모자르게 된다. 그럼 어쩌나? +1을 해준다.
for(int j=0; j<1+i*2;j++)

Q2반복문과 조건문을 사용하여 다음 모양을 출력하는 프로그램을 만들어 보시오.

(조건문 생략함)

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

public class C123p5 {

	public static void main(String[] args) 
	{
		for(int i = 0; i<4; i++)
		{
			for(int j = 0; j<4-i; j++) {
				System.out.printf(" ");
			}
			for(int j = 0; j<1+i*2; j++) {
				System.out.printf("*");
			}
			
			System.out.println( );
		}
		
		for(int i = 0; i<3; i++) 
		{
			for(int j = 0; j<2+i; j++) {
				System.out.printf(" ");
			}
			for(int j =0; j<5-i*2; j++)
			{
					System.out.printf("*");
			}
			System.out.println( );
			}
	}
	
}

마름모 모양은 위에 피라미드 별찍기를 이용해 코드를 짜면 편하다.
피라미드 모양 별찍기 코드를 입력하고 밑에 역삼각형 모양 별찍기 코드를 만든다고 생각하면 편하다.

그럼 역삼각형 모양 코드를 짜보도록 하자.

ㅤ줄 수(i)ㅤ공백(j)ㅤㅤ *(j)ㅤㅤ
ㅤ025 ㅤ
ㅤ133 ㅤ
ㅤ241 ㅤ

Q1문제에서 처럼 줄, 공백, 별찍기 순으로 생각하면 편하다.
은 실실적으로 3줄이기 때문에 3줄이 완성될 때 까지 줄 바꿈을 할 수 있도록 조건식을 짜준다.
for(int i = 0; i<3; i++)
공백을 보면 2,3,4로 1씩 커지는 모습을 볼 수 있다. i를 기준으로 2,3,4를 만들려면 어떻게해야할까? i에서 2를 더해주면 된다.
for(int j = 0; j<2+i; j++)
은 5,3,1로 2씩 줄어드는 모습을 보인다. i를 기준으로 생각해보자. j가 2 씩줄어드니 i에 2를 곱해보자.
0,2,4가 된다. 이걸로 어떻게 5,3,1을 만들 수 있을까?
5를 빼주면 된다.
for(int j =0; j<5-i*2; j++)


profile
html/css공부 중(JAVA잠시 접어두는 중)

0개의 댓글