ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java 코딩테스트 reminders
    카테고리 없음 2025. 2. 7. 13:16

    1. 입력받기

    • BufferedReader 사용 방법 - StringTokenizer 사용 X
    import java.io.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String input = br.readLine();
    
            String[] inputStrings = input.split(" "); // StringTokenizer 사용 안하고 split 하는 방법
            System.out.println(Arrays.toString(inputStrings));
        }
    }
    • BufferedReader 사용 방법 - StringTokenizer 사용 O
    import java.io.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer st = new StringTokenizer(br.readLine());
    
            int N = Integer.parseInt(st.nextToken());
            int M = Integer.parseInt(st.nextToken());
    
            System.out.printf("%d, %d\n", N, M);
        }
    }

     

    • 입력받은 숫자 개수를 모를때  - StringTokenizer 사용하는 방법
      • while(st.hasMoreTokens()) {}
    import java.io.*;
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer st = new StringTokenizer(br.readLine());
    
            while(st.hasMoreTokens()) {
                System.out.println(Integer.parseInt(st.nextToken()));
            }
        }
    }

    2. Array, ArrayList

     

    • Array: 크기가 고정됨. 한 번 선언하면 크기를 변경할 수 없음.
    int[] arr = new int[5]; // 크기가 5로 고정됨
    • ArrayList: 크기가 동적으로 변함. 요소를 추가하거나 삭제하면 자동으로 크기가 조정됨.
    ArrayList<Integer> list = new ArrayList<>(); // 크기 제한 없음

     

     


    3. 정렬

    기본형 (primitive)

    • 오름차순
      • Arrays.sort(arr)
    import java.util.Arrays;
    
    public class Main {
        public static void main(String[] args) {
            int[] arr = {5, 3, 8, 1, 2};
            Arrays.sort(arr); // 오름차순 정렬
            System.out.println(Arrays.toString(arr)); // [1, 2, 3, 5, 8]
        }
    }
    • 내림차순 : Wrapper 클래스로 변경해야 함!!!!!!!
      • Arrays.sort(Arr, Collections.reverseOrder());
    import java.util.Arrays;
    import java.util.Collections;
    
    public class Main {
        public static void main(String[] args) {
            int[] arr = {5, 3, 8, 1, 2};
    
            // int[] -> Integer[] 변환
            Integer[] arrInteger = Arrays.stream(arr).boxed().toArray(Integer[]::new);
            
            Arrays.sort(arr, Collections.reverseOrder()); // 내림차순 정렬
            System.out.println(Arrays.toString(arr)); // [8, 5, 3, 2, 1]
        }
    }

     

    Wrapper형

    • 오름차순: Arrays.sort(arr);
    • 내림차순: Arrays.sort(arr, Collections.reverseOrder());

    4. ArrayList<Integer> list = new ArrayList<>(); vs List<Integer> list = new ArrayList<>();


    5. 문자열에서 특정 인덱스 접근 : charAt(int index)

    public class Main {
        public static void main(String[] args) {
            String str = "Hello, Java!";
            
            // 문자열의 0번째 인덱스 접근
            char firstChar = str.charAt(0);
            System.out.println(firstChar); // 'H'
        }
    }

    6. 배열의 깊은 복사 - 주소값 복사 X 데이터만 복사 O

    • Arrays.copyOf(원본배열, 복사할 길이)
    • Arrays.copyOfRange(원본 배열, 복사할 시작 인덱스, 복사할 끝 인덱스)

    7. 배열 초기화 : Arrays.fill(배열명, 초기화할 값)

    int[] arr = new int[10];
    
    Arrays.fill(arr, 1); // 1로 전부 초기화

     


    8. 함수 매개변수로 배열 넘기기

    • 원본을 변경하고 싶다면 → 그냥 배열을 매개변수로 전달
    • 원본을 변경하고 싶지 않다면 → 배열을 복사해서 전달
     

    9. 객체가 아닌 원시 데이터 타입은 메서드 호출 불가

    Integer a = 1; // 메서드 호출 가능 (ex. a.equals(b))
    
    int a = 1; // 메서드 호출 불가능

    10. 커스텀 정렬

    primitive 타입 int[ ] arr

    • Wrapper 타입으로 변환 후 
    Arrays.sort(arr, (a,b) -> {정렬 로직});

    Wrapper 타입 Integer[ ] arr

    Arrays.sort(arr, (a,b) -> {정렬 로직});

    ArrayList 타입 ArrayList<Integer> list

    list.sort((a,b) -> {정렬 로직});

     

     


    11. Stack, Queue, Set, Map

    Stack
    // 선언
    Stack<Integer> stack = new Stack<>();
    
    // top 값 조회
    int top = stack.peek();
    
    // push
    stack.push(1);
    
    // pop
    stack.pop();
    
    // empty 확인
    stack.isEmpty()

     

     

    Queue
    // Pair 클래스
    class Pair {
        int first, second;
    
        Pair(int first, int second) {
            this.first = first;
            this.second = second;
        }
    }
    
    // Queue 선언
    Queue<Pair> queue = new LinkedList<>();
    
    // push
    queue.offer(pair);
    
    // pop
    Pair front = queue.poll();
    
    // empty 확인
    queue.isEmpty()

     

    Set

    // 선언
    Set<Integer> set = new HashSet<>();
    
    // push
    set.add(3);
    set.add(1);
    set.add(2);
    set.add(3); // 중복된 값은 저장되지 않음
    
    // 출력 - 순서 유지 X
    System.out.println(set); // 예: [1, 2, 3] (순서 랜덤)
    
    // 포함 여부 확인
    System.out.println(set.contains(2)); // true
    System.out.println(set.contains(5)); // false

     

    Map
    // 선언
    Map<String, Integer> map = new HashMap<>();
Designed by Tistory.