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

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

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

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

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

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

<다이아몬드 출력>

[#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#]
  두번째 문제입니다.
‘*’을 이용해 하트를 출력 하시오.(다이아몬드 출력 응용편)

<하트 출력>

[#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요~^^
혹시 다른 재미있는 방법으로 문제를 풀으신 분들은 댓글을 달아 주시와요~^^