document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // [INFO]
  2. // #1 최상위 패키지 (root package)는 사용하지 않는 것을 권장합니다.
  3. // #2 가급적 클래스의 용도 혹은 분류를 직관적으로 파악할 수 있는 패키지 경로를 사용해야 합니다.
  4. // #3 패키지 명칭은 알파벳 소문자로만 정의합니다.
  5.  
  6. package algospot.exam.mercy;
  7.  
  8. import java.util.Scanner;
  9.  
  10. // [INFO]
  11. // #1 클래스 자체에 대한 설명(요약) 주석을 작성하는 것이 좋습니다.
  12. // #2 클래스의 용도 혹은 기능을 나타내는 짧은 제목 혹은 설명을 입력해두면 코드 이해와 기능 찾기에 유리합니다.
  13. // #3 작성자 연락처를 기입하는 것은 다른 개발자가 버그를 발견했을 때, 원작자에게 통보하거나 논의할 수 있도록 해줍니다.
  14. // #4 JavaDoc 형식으로 주석(comment)를 작성하면, 문서화 작업이 수월해집니다.
  15.  
  16. /**
  17.  * <pre>
  18.  * AlgoSpot Quiz in tutorial
  19.  * Mercy https://algospot.com/judge/problem/read/MERCY
  20.  * </pre>
  21.  *
  22.  * @author "Sunny Kwak" (sunnykwak@hanmail.net)
  23.  */
  24. public class AlgoSpotMercy {
  25.  
  26.     // [INFO]
  27.     // #1 뚜렷한 의미를 가지는 값(수치, 문자열)은 값 자체를 직접 사용하기 보다는 \'상수 선언\'을 하면 좋습니다.
  28.     // #2 값 자체 (ex : 1, "title") 보다는 상수 명칭이 가독성과 의미 파악 면에서 좋습니다.
  29.    
  30.     private static final int MIN_INPUT_NUMBER = 1;
  31.     private static final int MAX_INPUT_NUMBER = 10;
  32.  
  33.     public static void main(String[] args) {
  34.        
  35.         // [INFO]
  36.         // #1 변수 명칭은 \'기능을 함축적으로 요약한\' 명칭을 사용합니다.
  37.         // #2 변수 명칭에 대한 엄격한 제약은 없으나, 용도/역할을 가급적 알기 쉽게 이름을 부여하면, 직관적으로 이해할 수 있습니다.
  38.         // #3 stdin 은 \'standard input\'의 약자입니다.
  39.         // #4 사용자로부터 데이터를 입력 받을 때는 적절한 안내 문구를 출력하는 것이 좋습니다. (UI 관점)
  40.        
  41.         System.out.print("Input number (N <= 10) : ");
  42.        
  43.         Scanner stdin = new Scanner(System.in);
  44.         int userInputNum = stdin.nextInt();
  45.  
  46.         // [INFO]
  47.         // #1 입력 값이 요구조건을 만족하는지 여부를 검증(validation)해야 합니다.
  48.         // #2 nextInt() 메소드는 음수(negative) 값을 입력 받을 수도 있습니다.
  49.         // 즉, API의 동작 방식(입출력 값의 범위, 오류 처리 등)을 정확히 숙지해야 합니다.  
  50.        
  51.         if(userInputNum >= MIN_INPUT_NUMBER && userInputNum <= MAX_INPUT_NUMBER) {
  52.            
  53.             // [INFO]
  54.             // loop 를 수행하기 위한 방법은 for, while, do ~ while 등이 있지만,
  55.             // 가급적 각각의 용도를 구분해 사용하는 것이 좋습니다.
  56.             // for : 시작과 종료 값의 범위가 명확할 때 사용하는 것을 권장합니다.
  57.             // while : 한번도 수행하지 않을 가능성이 있고, 종료 조건을 루프 시작 지점에서 판단할 때 권장합니다.
  58.             // do ~ while : 한번이라도 수행해야만 하고, 종료 조건을 루프 종료 지점에서 판단할 때 권장합니다.
  59.            
  60.             for(int idx=0; idx<userInputNum; idx++ ) {
  61.                 System.out.println("Hello Algospot!");
  62.             }
  63.         }
  64.        
  65.         // [INFO]
  66.         // 정상적으로 수행할 수 없을 경우에는 명확한 오류 처리를 수행해야,
  67.         // 사용자/개발자 모두 프로그램의 정상 동작 여부를 판단할 수 있습니다.
  68.        
  69.         else {
  70.             System.out.println("Not allowed input number : " + userInputNum);
  71.         }
  72.        
  73.         // [INFO]
  74.         // 프로그램 수행 중에서 사용한 자원은 꼭 해제(close)하는 습관을 들여야 합니다.
  75.         // (JVM 등의 하위 시스템이 자동으로 처리할 지라도, 명시적으로 해주는 것이 혼란을 방지할 수 있어 좋습니다.)
  76.        
  77.         stdin.close();
  78.     }
  79. }
');