[알고리즘] JAVA 기술 정리글


Java 로 알고리즘을 풀면서, 사용한 기술에 대해서 정리한 글 입니다.

목록


  1. EOF 처리
  2. 앞뒤 공백 자르기
  3. 숫자 하나씩 자르기
  4. FastScanner
  5. char to int



구현


  1. EOF 처리

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    while ((line = br.readLine()) != null && line.length() != 0) {
      // ...
    }
       
    // 근데 엔터는 한번 더 쳐야된다는게 함정
    Scanner sc = new Scanner(System.in);
    while(sc.hasNextLine()) { sc.nextLine(); }
    while(sc.hasNextInt()) { sc.nextInt(); }
    
  2. 앞뒤 공백 자르기 .trim

  3. 숫자 하나씩 자르기

    public static int[] splitNumber (int n) {
        int size = String.valueOf(n).length();
        int[] result = new int[size];
        String temp = String.valueOf(n);
        String[] datas = temp.split("");
       
        for (int i=0; i<size; i++) {
            result[i] = Integer.parseInt(datas[i]);
        }
        return result;
    }
    
  4. FastScanner

    class FastScanner {
        BufferedReader br;
        StringTokenizer st;
       
        FastScanner(InputStream i) throws Exception {
            br = new BufferedReader(new InputStreamReader(i));
        }
       
        String next() throws Exception {
            while (st == null || !st.hasMoreTokens()) {
                st = new StringTokenizer(br.readLine());
            }
            return st.nextToken();
        }
       
        int nextInt() throws Exception {
            return Integer.parseInt(next());
        }
           
        String nextString() throws Exception {
            String result = br.readLine();
            return result;
        }
    }
    
  5. **char to int**

    char - '0'

  6. 배열 돌리기

    (i+K) % A.length 로 인덱스를 구한 후, 원래 배열의 값으로 넣어주면 됨. 그리고 새로만든 배열 리턴

  7. hashSet

    HashSet<Integer> intSet = new HashSet<>();
       
    for (int arrayData : A) {
        if (intSet.contains(arrayData)) {
            intSet.remove(arrayData);
            continue;
        }
       
        intSet.add(arrayData);
    }
       
    return intSet.toArray(new Integer[intSet.size()])[0];
    

    배열에서 짝 제외하고 홀로남은 수를 출력하는 코드이다. HashSet을 이용했으며, HashSet의 선언방법은 위와 같다.

    add와 remove, contains 정도면 유용하게 사용할 수 있을 것 같다. Set의 특성상 중복적인 값은 허용되지 않으니

  8. array init

    int [] array = { 1, 2, 3, 4 };

    Arrays.fill(array, data);

  9. 정수 최댓값

    Integer.MAX_VALUE 를 통해서 초기화 하고 최솟값을 구할 때 유용하게 사용

    Double.MAX_VALUE 도 가능

  10. boolean, Boolean

    boolean 으로 하면 기본값이 전부 false, Boolean으로 하면 Arrays.fill 함수를 통해서 초기화 필요

  11. List to Array (Integer 배열로 리턴이 필요할 경우)

    list.stream().mapToInt(i->i).toArray()
    
  12. String to Array

    String[] ary = "abc".split("");
    
  13. HashMap

    HashMap<Integer, Integer> hashMap = new HashMap<>();
    

    TreeMap은 Key를 기준으로 자동정렬을 진행한다

  14. 두개의 Max, Min

    Math.max(1, 2)
    Math.min(1, 2)
    
  15. 제곱근 구하는 방법

    (int)Math.sqrt(N);
    
  16. 절댓 값

    Math.abs(data)
    





© 2018. by HYEON

Powered by HYEON