์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ๊ฐœ์š”2. ์ œ๊ฐ€ ์ง์ ‘ ํ•œ ๋ฒˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค3. ๊ด€๋ จ ๋ฌธ์„œ

1. ๊ฐœ์š”[ํŽธ์ง‘]

์•™ํผํ•œ ๋Œ์‹ฑ๋…€์—์„œ ๋‚˜์™€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์—๊ฒŒ ํ™”์ œ์™€ ๋น„์›ƒ์Œ๊ฑฐ๋ฆฌ๊ฐ€ ๋œ ๋ช…์žฅ๋ฉด(?)์ด๋‹ค.
์ƒํ™œ์ฝ”๋”ฉ์—์„œ๋„ ์ธ๊ธฐ(?)๋ฅผ ๋Œ์—ˆ๋‹ค.


์ฐจ์ •์šฐ(๋ฐฐ์šฐ ์ฃผ์ƒ์šฑ)๊ฐ€ ํƒ€์ž๋ฅผ ์น˜๊ณ  ์žˆ๋‹ค.
์ฐจ์ •์šฐ: ํ•œ ์ค„๋กœ ์งค ์ฝ”๋“œ๋ฅผ ๋ˆ„๊ฐ€ ์—ด ์ค„๋กœ ๋งŒ๋“ค์–ด๋†จ์–ด์š”? ์—๋Ÿฌ ์ฐพ๊ธฐ ํž˜๋“ค๊ฒŒ. (์ž ์‹œ ๋’ค) ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์„œ ํ”„๋กœ๊ทธ๋žจ๋งŒ ๋ฌด๊ฑฐ์›Œ์กŒ์ž–์Šต๋‹ˆ๊นŒ? ์ด๋Ÿฌ๋‹ˆ๊นŒ ์„œ๋น„์Šค๊ฐ€ ๋ฒ„๋ฒ…๋Œ€์ง€.

๋“œ๋ผ๋งˆ ์•™ํผํ•œ ๋Œ์‹ฑ๋…€์—์„œ ์ฐจ์ •์šฐ ์—ญ์„ ๋งก์€ ์ฃผ์ƒ์šฑ์ด ์ฒœ์žฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‹ค๋ ฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ์—„์ฒญ๋‚œ ํƒ€์ž ์†๋„๋กœ ์„œ๋น„์Šค๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ์žฅ๋ฉด์ด๋‹ค...

๋ฌผ๋ก  ํ›ผ์ดํฌ๋‹ค.
์—ฌ๊ธฐ์„œ์˜ ์›ƒ์Œํฌ์ธํŠธ๋Š” ๋‘ ๊ฐ€์ง€์ธ๋ฐ, ์ฒ˜์Œ์—๋Š” ์—ด์‹ฌํžˆ ๋‹ค๋‹ค๋‹ฅ ์ฝ”๋“œ๋ฅผ ์น˜๋ฉด์„œ ๋งํ•œ ์ฃผ์ƒ์šฑ์˜ ๋Œ€์‚ฌ์ด๋‹ค. ์ด๊ฒŒ ์™œ ๋ง๋„ ์•ˆ๋˜๋Š” ์†Œ๋ฆฌ๋ƒ๋ฉด, ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง„๋‹ค๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ๋ฒ„๋ฒ…๋Œ€๋Š” ๊ฑด ์ •๋ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ธฐ์ดˆ๋„ ๋ชจ๋ฅธ๋‹ค๋Š” ์†Œ๋ฆฌ์ธ๋ฐ,[1] ์ €๋Ÿฐ ์†Œ๋ฆด ์ง€๊ธˆ ์†์นญ ์ฒœ์žฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ์ด์ž ๋– ์˜ค๋ฅด๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํšŒ์‚ฌ์˜ ์‚ฌ์žฅ์ด๋ผ๋Š” ์‚ฌ๋žŒ์ด ํ•˜๋‹ค๋‹ˆ(...) ๋งˆ์น˜ ํŒ์‚ฌ๊ฐ€ ๋˜๊ฒ ๋‹ค๋Š” ์‚ฌ๋žŒ์ด ๋ฒ•์ด ๋ญ”์ง€ ๋ชจ๋ฅด๋Š”๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ์†Œ๋ฆฌ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•ˆ ์ด์˜๋‹ค.[2]

๊ฒŒ๋‹ค๊ฐ€, ๋™์˜์ƒ์„ ์ผ์‹œ์ •์ง€ํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ๋„์›Œ์ง„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๊ณ ์ž‘ Java๋ฅผ ์ด์šฉํ•œ ๊ตฌ๊ตฌ๋‹จ ์ถœ๋ ฅ ์˜ˆ์ œ๋‹ค.

์ฐธ๊ณ ๋กœ ์ € ์ฝ”๋”ฉ ํ™”๋ฉด์€ Notepad++์— ๋„์›Œ์ง„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ฐฑ์ŠคํŽ˜์ด์Šค ๊พน ๋ˆŒ๋Ÿฌ ์ง€์šฐ๋Š” ์žฅ๋ฉด์„ ์ดฌ์˜ํ•˜๊ณ  ๊ทธ๊ฑธ ๊ฑฐ๊พธ๋กœ ๋Œ๋ฆฐ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜๋„ ํ•œ๊ธ€ ์›Œ๋“œํ”„๋กœ์„ธ์„œ๊ฐ€ ์•„๋‹Œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์• ์šฉ(?)ํ•˜๋Š” ์—๋””ํ„ฐ๋ฅผ ๋„์›Œ๋†“์€ ๊ฑด ์นญ์ฐฌํ•  ๋งŒ ํ•˜๋‹ค. ๋น„์ „๊ณต์ž๋Š” ์ €๋Ÿฐ ์—๋””ํ„ฐ๊ฐ€ ์žˆ๋‹จ ์‚ฌ์‹ค์„ ์ž˜ ๋ชจ๋ฅธ๋‹ค. ์ž‘๊ฐ€๊ฐ€ ๊ทธ๋ž˜๋„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ผํ•˜๋Š”์ง€ ์กฐ๊ธˆ์€ ๊ณต๋ถ€ํ–ˆ๋‹ค๋Š” ๋ฐ˜์ฆ. ์•„์˜ˆ ๋ชฐ๋ž์œผ๋ฉด cmd์ฐฝ ๋„์›Œ๋†“๊ณ  dir /s ๋‚˜ ๋ˆ„๋ฅด๊ณ  ์žˆ์—ˆ๊ฑฐ๋‚˜ ๋” ์‹ฌํ•˜๊ฒŒ๋Š” "๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค" ์—๋Ÿฌ๋ฉ”์‹œ์ง€๊ฐ€ ์ฃฝ ๋‚ด๋ ค๊ฐ€๋Š” ๋ง‰์žฅ ํ™”๋ฉด์„ ๋ณด์—ฌ์คฌ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
์—„์ฒญ๋‚œ ํƒ€์ž์˜ ์ •์ฒด(...)

์œ„์˜ ์ฃผ์„์— '๊ฒŒ์ž„ ๋กœ๋”ฉ ๋ถ€๋ถ„๋ถ•๋ถ•'์ด๋ผ๊ณ  ์“ฐ์—ฌ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„ ๊ฒŒ์ž„ ์ฝ”๋“œ์˜ ์ผ๋ถ€์ธ ๊ฒƒ ๊ฐ™๋‹ค.
์ž๋ฐ” ํŒŒ์ผ์—๋Š” public class ์„ ์–ธ๋ถ€๊ฐ€ ๋”ฑ ํ•˜๋‚˜๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ(ํ•œ ํŒŒ์ผ์— public class์„ ์–ธ๋ถ€๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ๋˜๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค) 174๋ฒˆ์งธ์ค„ ์œ„์ชฝ์€ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋ฐ˜๋ณตํ•ด์„œ ๋ณต๋ถ™ํ•œ ๊ฒƒ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ๊ฒจ์šฐ ๊ตฌ๊ตฌ๋‹จ ํ•˜๋‚˜ ์ถœ๋ ฅํ•˜์ž๊ณ  private ํด๋ž˜์Šค๋ฅผ ๋ฐฑ ์ค„ ๋„˜๊ฒŒ ์ž‘์„ฑํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†๋‹ค๋Š” ๊ฑธ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๊ทธ๋ ‡๋‹ค. ์ฝ”๋“œ ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ค„์ด ํ•˜๋‚˜๋„ ์•ˆ ๋ณด์ด๋Š” ๊ฑธ๋กœ ๋ด์„œ ๋”๋”์šฑ.

์ฐจ์ •์šฐ์˜ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ํ•œ ์ค„๋กœ ๋งŒ๋“ [์•„์นด์ด๋ธŒ] ์‚ฌ๋žŒ์ด ์žˆ๋‹ค.
์œ„์— ๋งํฌ๊ฐ€ ๊นจ์กŒ๋Š”๋ฐ ์ด ์ฝ”๋“œ๋‹ค.

for(int i = 0; i < 36; i++) System.out.format(โ€œ%d X %d = %2d%cโ€, i%4+2, i/4+1, (i%4+2) * (i/4+1), i%4/3*4+9);

2. ์ œ๊ฐ€ ์ง์ ‘ ํ•œ ๋ฒˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค[ํŽธ์ง‘]

์œ„ ์ฝ”๋“œ์˜ 174๋ฒˆ์งธ์ค„ ์œ„์ชฝ์ด ๋ญ”์ง„ ์•Œ ์ˆ˜ ์—†์ง€๋งŒ ์ผ๋‹จ ํ™”๋ฉด์— ๋‚˜์˜จ ์ฝ”๋“œ๋งŒ ๋ณต์›(?)ํ•ด๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ๋œ๋‹ค.

public class GuguClass {
  public static void main(String[] args) {
    System.out.format("%n                      < gugu>%n");
    for(int j=1; j<=9; j++) {
      System.out.println();
      for(int i=2; i<=5; i++) { // 2~ 5
        System.out.format("%d X %d = %2d    ", i, j, i * j);
      }
    }
    System.out.println(); // ์ค„๋ฐ”๊ฟˆ
    for(int j=1; j<=9; j++) {
      System.out.println();
      for(int i=6; i<=9; i++) { // 6~ 9
        System.out.format("%d X %d = %2d    ", i, j, i * j);
      }
    }
    System.out.println(); // ์ค„๋ฐ”๊ฟˆ
  }
}


์œ„ ํŒŒ์ผ์„ GuguClass.java ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ณ (๋Œ€์†Œ๋ฌธ์ž ์ฃผ์˜) javac GuguClass.java ํ•ด์„œ ์ปดํŒŒ์ผํ•œ ๋’ค์—(JDK๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•จ. ์ด๊ฑฐ ์„ค์น˜ํ•˜๋Š”๊ฑฐ๋„ ํ•œ ์ŠคํŠธ๋ ˆ์Šค ํ•˜๋‹ˆ๊นŒ ์ •๋ง ๊ด€์‹ฌ์žˆ๋Š” ์‚ฌ๋žŒ๋งŒ ํ•ด๋ด…์‹œ๋‹ค) java GuguClass ํ•˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๊ณผ:

                      < gugu>

2 X 1 =  2    3 X 1 =  3    4 X 1 =  4    5 X 1 =  5    
2 X 2 =  4    3 X 2 =  6    4 X 2 =  8    5 X 2 = 10    
2 X 3 =  6    3 X 3 =  9    4 X 3 = 12    5 X 3 = 15    
2 X 4 =  8    3 X 4 = 12    4 X 4 = 16    5 X 4 = 20    
2 X 5 = 10    3 X 5 = 15    4 X 5 = 20    5 X 5 = 25    
2 X 6 = 12    3 X 6 = 18    4 X 6 = 24    5 X 6 = 30    
2 X 7 = 14    3 X 7 = 21    4 X 7 = 28    5 X 7 = 35    
2 X 8 = 16    3 X 8 = 24    4 X 8 = 32    5 X 8 = 40    
2 X 9 = 18    3 X 9 = 27    4 X 9 = 36    5 X 9 = 45    

6 X 1 =  6    7 X 1 =  7    8 X 1 =  8    9 X 1 =  9    
6 X 2 = 12    7 X 2 = 14    8 X 2 = 16    9 X 2 = 18    
6 X 3 = 18    7 X 3 = 21    8 X 3 = 24    9 X 3 = 27    
6 X 4 = 24    7 X 4 = 28    8 X 4 = 32    9 X 4 = 36    
6 X 5 = 30    7 X 5 = 35    8 X 5 = 40    9 X 5 = 45    
6 X 6 = 36    7 X 6 = 42    8 X 6 = 48    9 X 6 = 54    
6 X 7 = 42    7 X 7 = 49    8 X 7 = 56    9 X 7 = 63    
6 X 8 = 48    7 X 8 = 56    8 X 8 = 64    9 X 8 = 72    
6 X 9 = 54    7 X 9 = 63    8 X 9 = 72    9 X 9 = 81    


๊ทผ๋ฐ ์ด ์ฝ”๋“œ์—๋Š” ์ค‘๋ณต์ด ์žˆ์œผ๋ฏ€๋กœ ๋” ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
์ฐจ์ •์šฐ์”จ, ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์„œ ํ”„๋กœ๊ทธ๋žจ๋งŒ ๋ฌด๊ฑฐ์›Œ์กŒ์ž–์Šต๋‹ˆ๊นŒ? ์ด๋Ÿฌ๋‹ˆ๊นŒ ์„œ๋น„์Šค๊ฐ€ ๋ฒ„๋ฒ…๋Œ€์ง€.
๊ทผ๋ฐ 3ํšŒ ์ดํ•˜์˜ ์ค‘๋ณต ์ฝ”๋“œ๋Š” ์ค‘๋ณตํ•ด์„œ ์จ๋†“๋Š”๊ฒŒ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ์†๋„๊ฐ€ ๋” ๋น ๋ฅด๋‹ค๋Š” ๊ฑด ํ•จ์ •.
๊ทธ๋ƒฅ ์ปดํŒŒ์ผ๋Ÿฌํ•œํ…Œ ๋น ๋ฅธ ์‹คํ–‰์— ์ตœ์ ํ™”ํ•˜๋ผ๊ณ  ์‹œํ‚ค๋ฉด ์•Œ์•„์„œ ์ฝ”๋“œ๋ฅผ ์†๋ด์ฃผ์‹ ๋‹ค. ๊ณ ๊ฑด ๋ชฐ๋ž์ง€?
public class GuguClass {
  public static void gugu(int c) {
    for(int j=1; j<=9; j++) {
      System.out.println();
      for(int i=c; i<=c+3; i++) {
        System.out.format("%d X %d = %2d    ", i, j, i * j);
      }
    }
    System.out.println(); // LF
  }
  public static void main(String[] args) {
    System.out.format("%n                      < gugu>%n");
    gugu(2); gugu(6);
  }
}


๊ฒฐ๊ณผ๋Š” ๊ฐ™์Œ.

๋” ์ค„์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ํ•œ ์ค„์„ ํ•œ ๋ฒˆ์— ์ฐ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ค„ ์ˆ˜๋Š” ์ค„์—ˆ์ง€๋งŒ ๊ธ€์ž์ˆ˜๋Š” ๋Š˜์—ˆ๋‹ค.

public class GuguClass {
  public static void gugu(int c) {
    for(int j=1; j<=9; j++) {
      System.out.format("%d X %d = %2d    %d X %d = %2d    %d X %d = %2d    %d X %d = %2d\n", c, j, c++ * j, c, j, c++ * j, c, j, c++ * j, c, j, c * j);
      c-=3;
    }
    System.out.println();
  }
  public static void main(String[] args) {
    System.out.format("%n                      < gugu>%n");
    gugu(2); gugu(6);
  }
}


๋” ์ค„์ผ์ˆ˜๋„ ์žˆ๋‹ค ํ•œ์ค„์ด๊ธด ํ•œ์ค„์ด๋‹ค.
public class GuguClass {public static void main(String[] args) {System.out.format("%n                      < gugu>%n");for(int j=1; j<=9; j++) {System.out.println();for(int i=2; i<=5; i++) { /* 2~ 5*/System.out.format("%d X %d = %2d    ", i, j, i * j);}} System.out.println(); /* ์ค„๋ฐ”๊ฟˆ*/ for(int j=1; j<=9; j++) {System.out.println(); for(int i=6; i<=9; i++) { /* 6~ 9*/System.out.format("%d X %d = %2d    ", i, j, i * j);}}System.out.println(); /* ์ค„๋ฐ”๊ฟˆ*/}}


์ž๋ฐ”๋กœ๋Š” ์ด ์ด์ƒ ์ค„์ด๊ธด ์–ด๋ ค์›Œ ๋ณด์ธ๋‹ค. ๋ฌธ๋‹จ 1์— ํ•œ ์ค„๋กœ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ์‚ฌ๋žŒ์€ Haskell์„ ์‚ฌ์šฉํ•œ ๋“ฏ ํ•œ๋ฐ ์–ธ์–ด๋ฅผ ๋ฐ”๊ฟ”์น˜๊ธฐํ•˜๋Š” ๊ฑด ๋ฐ˜์น™.[4]

์™œ ๋ฐ˜์น™์ด๋ƒ๋ฉด, ์†Œ์Šค์ฝ”๋“œ๋Š” ์ค„์–ด๋“ค๊ฒ ์ง€๋งŒ ๋‘ ์–ธ์–ด๋ฅผ ๋ชจ๋“ˆ ์ˆ˜์ค€์—์„œ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•œ ๋ง์ปค ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฌด์ง€๋ง‰์ง€ํ•˜๊ฒŒ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. scala, clojure ๋“ฑ์˜ ์–ธ์–ด๋Š” ํด๋ž˜์Šค ์ˆ˜์ค€ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•ด์„œ ๋ง์ปค ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋”ฐ๋กœ ํ•„์š”์—†์ง€๋งŒ ์ด๊ฒƒ๋„ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ธธ์–ด์ง€๋Š” ๊ฑด ๋ง‰์„ ์ˆ˜ ์—†๋‹ค.

3. ๊ด€๋ จ ๋ฌธ์„œ[ํŽธ์ง‘]


[1] ๋ผ์ธ์ด ๊ธธ๋‹ค๊ณ  ์ข‹๋‹ค๋Š” ๋œป์€ ์•„๋‹ˆ๋‚˜, ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํ™ฉ์—์„œ ๋งž์ถฐ ์–ผ๋งˆ๋‚˜ ์ž˜ ์งฐ๋Š” ๊ฐ€๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ•œ์ค„ ๋ณด๋‹ค, ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํ™ฉ์— ๋งž์ถฐ ์ˆ˜์‹ญ์ค„ ๋Š˜์—ฌ ์“ด ์ฝ”๋“œ๊ฐ€ ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.
[2] ๋Œ€๋‹ค์ˆ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์€ ๋‹คํฌ ํ…Œ๋งˆ๋ฅผ ์–ป์€ IDE๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. IntelliJ IDEA๋ผ๋˜๊ฐ€, Visual Studio Code๋ผ๋˜๊ฐ€.
[4] ghci์—์„œ ๋ฐ”๋กœ ์ž…๋ ฅํ•  ๋•Œ๋Š” main = ...์œผ๋กœ ํ•˜์ง€ ๋ง๊ณ  let main = ...์œผ๋กœ ์ž„์‹œ ์„ ์–ธํ•œ ํ›„ ๋‹ค์Œ์ค„์—์„œ ๋‹ค์‹œ main์„ ์‹คํ–‰ํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ถœ๋ ฅ ๋  ๊ฒƒ์ด๋‹ค.