[JAVA 복습] 자바 문법 for 코딩 테스트

Sangil Park ·2025년 1월 3일

JAVA

목록 보기
1/3

정리하기에 앞서

Java 문법을 알고있다고 생각을 했었지만,
스트림, 람다, 제네릭(T,E,N,K,V) 인터페이스(Comparator), 각종 유틸리티 클래스(Arrays. Collections),
접근 제어자, 메소드(생성자) 참조 등등 여러 개념들에 있어서 완전히 익숙하지가 않은 것 같다.
코딩 테스트에서 해당 개념들을 어떻게 활용할 지 꾸준한 고민이 필요할 것 같다. 특히 해당 유튜브에서는
매우 간단한 개념들을 제시하였지만 꼬리 물기 질문을 통해서 깊게 파고 들 수 있었다.
모든 것들을 알아야 하진 않지만 이런 것들이 있다~ 정도로 이해하고 실제 코딩 테스트 준비할 때는
자주 나오는 것들을 손에 익히는 것으로 대비하면 될 것 같다. (ex. Comparator, ArrayList for Graph ...etc)

int vs long

  • 코딩테스트에서는 long이 더 좋음

이럴 때 의심하기

-> 특정 테스트 케이스에서 실패할 때
-> 테스트 케이스 성공하더라도 의심해보기!

int answer = 10000000000;
answer = += 20000000000

과 같은 경우 오류가 발생함

Scanner vs BufferedReader

  • 코딩테스트에서는 BufferedReader가 더 좋음
    • ex) 제한 시간(1초)
  • 입력 데이터가 많아질 수록 그 차이는 더욱 커짐

이럴 때 의심하기

-> 시간초과로 실패할 때

사용 방법 비교

Scanner sc = new Scanner(System.in)
int a = sc.nextInt();
  • Scanner 객체 생성 후 nextInt()라는 함수를 사용해서 변수 저장가능
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
  • BufferedReader 객체 생성시 InputStreamReader 객체 생성해줘야 함
  • BuffeerdReader 객체는 readLine()이라는 함수로 스트링 형태로 입력을 받게 됨
    • StringTokenizer로 받아주어야 함
  • Int 형태로 파싱까지 해야 함

++i vs i++

  • 전위 연산자 vs 후위 연산자

[Array] 오름차순 정렬 vs 내림차순 정렬

오름차순 정렬

int list[] = {3,2,1};
Arrays.sort(list)l
  • Java의 유틸릴리티 클래스 Arrays 에서 제공하는 sort 함수로 정렬

내림차순 정렬

방법 1

Integer list[] = {3,2,1}
Arrays.sort(list, Collections.reverseOrder());
  • 두 번재 인수로 Comparator를 전달할 수 있음
    • Collections.reverseOrder()는 Comparator 객체를 반홚함
  • Collections 유틸리티 클래스에서 컬렉션(자료구조)를 조작하는 함수들을 제공함
  • Comparator느 특정 기준 정렬을 위한 인터페이스임
    •     @Override
          public int compare(Integer n1, Integer n2){
              return n2.compareTo(n1); /
          }
      }```
      이런 식으로 사용하던 것을 reverseOrder로 줄여 쓴 형태 

방법 2

int list[] = {3,2,1};
Integer[] tmp = Arrays.stream().boxed().toArray(Integer[]::new);
Arrays.sort(list, Collections.reverseOrder());
  • int 배열을 Integer 배열로 형변환 후 방법1

방법 3

int list[] = {-3,-2,-1};
Arrays.sort(list);
  • 그냥 -1 곱해서 저장하고 오름차순으로 정렬 후 출력할 때는 -1 곱해서 출력

sort vs Comparable

  • 단일 기준, 여러개 기준
    • ex) 영어 점수로 정렬하되 같을 경우엔 수학 점수로 정렬
Class Score implements Comparable<Score> 
  • Score 클래스는 Comparable 인터페이스를 구현
@Override
public int compareTo(Score o){
  if (this.english != o.english){
    return this.english - o.english;
  }
  return this.math - o.math;
}

실제로 정렬할 때는 아래 방식으로 사용

ArrayList<Score> list = new ArrayList<>();
Collections.sort(list);

Static 변수

  • 메모리 할당은 1번
  • 변수를 공유
  • 코딩테스트에서 하나의 변수를 여러 곳에서 써야할 때 간편하게 사용할 수 있음
    • ex) static int a;

MOD 연산의 특성

  • 덧셈, 뺄셈, 곱셈 에 대해서 MOD 연산은 분배 법칙이 성립함
  • 각 STEP 마다 MOD 연산을 구하면 됨

ArrayList vs LinkedList

  • 기본 적으로 그래프 문제 풀이에서 ArrayList가 사용됨
  • LinkedList는 Deque, Queue 구현체로 사용됨
    자세한 건 문제 풀이에서 확인하기

0개의 댓글