JAVA를 이용한 For문 활용(다이아몬드, 하트 만들기)

얼마전  JAVA매냐(?) 친구 한명이 메신저를 통해 재미있는 문제를 내 주었습니다.

JAVA를 이용한 For문 활용(다이아몬드, 하트 만들기)_ 1  For문을 이용해 ‘*’로 다이아몬드, 하트를 출력하는 문제 였는데요. For문을 자유자재로 사용 할 수 있게 되면 아무래도 프로그래밍에 많이 유리해 지기 때문에 한번 권해 보더라구요^^
그 친구는 얼마전에 이미 만들어 봤는데 재미 있었다는 이야기와 함께..

For문은 반복문과 조건문 게다가 변화값까지 한번에 셋팅할 수 있는 만능 명령어이기 때문에 자유자재로 구사 할 수 있게 되면, 그야말로 For문 한종류만 써서도 프로그램을 짤 수 있으니까요. For문으로 If문까지 처리를 할 수 있으니..

제 블로그를 통해 제가 친구에게 받았던 문제를 한번 내 보겠습니다^^
관심 있으신 분들은 재미로라도 한번 풀어보세요.

제가 만든 출력 화면은 참고를 위해 띄우고, 소스는 폴딩 처리를 해 놓겠습니다.
처음부터 소스를 보진 마시고, 한번 만들어 보신 다음에 소스를 비교해 보아요^^

첫번째 문제입니다.
‘*’을 이용해 다이아몬드를 출력 하시오.

JAVA를 이용한 For문 활용(다이아몬드, 하트 만들기)_ 2
<다이아몬드 출력>

[#M_소스 보기|소스 숨김|
class  diamond
{
public static void main(String[] args)
{
int i;    //변수 i 지정
       for(i = 12; i < 20; i+=2){
pprn(20 – i);    //공백을 출력하는 함수 호출
pprns(i*2);    //*을 출력하는 함수 호출
       System.out.println();     //한줄을 완성하면 줄 내림
       }
/* 다이아몬드의 머리를 출력하는 For문 종료*/
for(i = 20; i >= 0; i-=2){
pprn(20 – i);    //공백 출력 함수 호출
pprns(i*2);    //*을 출력하는 함수 호출
       System.out.println();     //한줄이 완성되면 줄내림
}
/* 다이아몬드의 아랫도리 출력*/
   }
/*a로 받아들인 int만큼 공백을 출력하는 메소드*/
static void pprn(int a){
int j;
for(j = 0; j < a; j++)
System.out.print(” “);
}
/*a로 받아들인 int만큼 *을 출력하는 메소드*/
static void pprns(int a){
int j;
for(j = 0; j <= a; j++)
System.out.print(“*”);
}
}

/* 우리는…. 자바 매니아 입니다~ㅋ*/

_M#]
  두번째 문제입니다.
‘*’을 이용해 하트를 출력 하시오.(다이아몬드 출력 응용편)

JAVA를 이용한 For문 활용(다이아몬드, 하트 만들기)_ 3
<하트 출력>

[#M_소스 보기|소스 숨김|
class  heart
{
public static void main(String[] args)
{
int i;   //변수 i 지정
for(i = 4; i < 10; i+=2){
pprn(10 – i);    //공백을 출력하는 함수 호출
pprns(i*2);    //*을 출력하는 함수 호출
pprn((10 – i)*2); //하트의 갈라지는 부분 공백
pprns(i*2);    //갈라진 이후에 연결되는 *출력
System.out.println();     //한줄을 완성하면 줄 내림
}
/* 하트의 머리를 출력하는 For문 종료*/
for(i = 20; i >= 0; i-=2){
pprn(20 – i);    //공백 출력 함수 호출
pprns(i*2);    //*을 출력하는 함수 호출
       System.out.println();     //한줄이 완성되면 줄내림
}
/* 하트의 아랫도리 출력*/
}
/*a로 받아들인 int만큼 공백을 출력하는 메소드*/
static void pprn(int a){
int j;
for(j = 0; j < a; j++)
System.out.print(” “);
}
/*a로 받아들인 int만큼 *을 출력하는 메소드*/
   static void pprns(int a){
int j;
for(j = 0; j <= a; j++)
System.out.print(“*”);
}
}

/* 우리는…. 자바 매니아 입니다~ㅋ*/

_M#]
우리 모두 재미있는 자바 문제를 풀어 BOA요~^^
혹시 다른 재미있는 방법으로 문제를 풀으신 분들은 댓글을 달아 주시와요~^^