import java.util.LinkedHashSet; import java.util.Set; public final class Main { public static void main(String[] args) { Console.Instance.WriteLine(String.format("정수를 입력하세요(1~%d)", Checker.MAX_INPUT_VALUE)); int input = Console.Instance.ReadInt(); if (Checker.Instance.IsOdd(input)) { Console.Instance.WriteLine("홀수입니다."); } if (Checker.Instance.IsEven(input)) { Console.Instance.WriteLine("짝수입니다."); } } } enum Checker { Instance; public static final int MAX_INPUT_VALUE = 10000; private final Set<Integer> _oddNumbers = new LinkedHashSet<>(); private final Set<Integer> _evenNumbers = new LinkedHashSet<>(); Checker() { for (int i = 1; i <= MAX_INPUT_VALUE; i++) { if (i % 2 == 0) { _evenNumbers.add(i); } else { _oddNumbers.add(i); } } } public boolean IsOdd(int value) { return _oddNumbers.contains(value); } public boolean IsEven(int value) { return _evenNumbers.contains(value); } } enum Console { Instance; public void WriteLine(String line) { System.out.println(line); } public int ReadInt() { try { int sum = 0; while (true) { int input = System.in.read(); if (input == '\n' || input == ' ') { return sum; } else { sum = (sum * 10) + (input - '0'); } } } catch (Throwable ignored) { } return 0; } }



내가 생각한 더티한 코드임 남이 보기에는 더티할지는 모르겠다.


더티한 포인트는


(1) 일반적인 언어 네이밍 컨벤션 무시

(2) 싱글톤 남용

(3) 기능을 비효율적으로 구현