자바 연습문제 풀이3일차
*
***
*****
*******
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) ㅤ |
---|---|---|
ㅤ0 | 3 | 1 ㅤ |
ㅤ1 | 2 | 3 ㅤ |
ㅤ2 | 1 | 5 ㅤ |
ㅤ 3 | 0 | 7 ㅤ |
가장 먼저 줄을 코드로 짜보자.
일단 줄은 표에서는 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++)
*
***
*****
*******
*****
***
*
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)ㅤㅤ |
---|---|---|
ㅤ0 | 2 | 5 ㅤ |
ㅤ1 | 3 | 3 ㅤ |
ㅤ2 | 4 | 1 ㅤ |
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++)