[Java] 알고리즘 풀 때 유용한 메서드들

박상혁·2023년 4월 14일
0

Java

목록 보기
5/10

개요

코딩테스트를 자바로 준비하는 분들을 위해 알고리즘 문제를 풀 때 유용하고 편리한 메서드들을 소개하고자 합니다.
이를 통해 좀 더 간결하고 보기 편한 코드를 만들 수 있습니다.

❗️지속적으로 업데이트 될 예정

목차

  1. 문자 1개 관련
  2. 문자열 처리
  3. 자료형 파싱
  4. 좌표 생성 및 정렬

본문

⚠️ 해당 메서드들은 전부 자바 필수 요소인 java.lang 패키지 내에 존재하는 것들만 소개합니다.

1. 문자 1개

👉🏼 Character.getNumericValue(e)

Character 클래스의 static 메서드
char타입을 int타입으로 바꿔줍니다.

char c = '1';
System.out.println(c);
System.out.println((int)c);

1
49

ASCII 코드 기반이라 char를 int로 바꾸기 위해서는 -48이 필요. (원시 타입 한정)
해당 메서드의 이름을 통해 명시적으로 알려주어 코드 짤 때 보기 편해집니다.

👉🏼 Character.isDigit(e)

Character 클래스의 static 메서드
문자 1개 내에 숫자가 있는지 검사하여 있으면 true, 없으면 false를 출력합니다.

만일, 숫자와 다른 문자를 구별해야 할 상황이 있을 때 사용하면 편리합니다.

2. 문자열 처리

👉 String.replace(@NotNull CharSequence target, @NotNull CharSequence replacement)

어떤 문자를 숫자 등으로 대체해야 할 때 사용합니다.
다음은 프로그래머스 코딩테스트 입문 "영어가 싫어요" 문제 답안입니다.

String[] ZeroToNine = {"zero", "one", "two", "three", "four", "five"
    ,"six", "seven", "eight", "nine"};

for(int i = 0; i < ZeroToNine.length; i++) {
    numbers = numbers.replaceAll(ZeroToNine[i], String.valueOf(i));
}

return Long.parseLong(numbers);

replace를 이용하여 손쉽게 문자를 해당 인덱스에 그대로 교체할 수 있습니다.

  • 무조껀 문자로만 대체
  • replaceAll은 문자열 내에 있는 모든 문자 교체

3. 자료형 파싱

문자열(String)을 바꾸고 싶을 때 사용합니다.

각 참조 타입 static 클래스에 내장되있는 parse**() 혹은 valueOf()메서드를 사용하면 됩니다.

👉 Long.parseLong(String s)
👉 Integer.parseInt(String s)

4. 좌표 생성 및 정렬

자바에서 좌표를 생성하고자 하는경우, 우선 2차원 배열을 생성해야 합니다.
2차원 좌표라 가정하겠습니다.

int[][] arr = new int[N][2];

이후 해당 좌표(2차원 배열)을 정렬하는 메서드를 자바에서 제공해주는데 2가지 방법이 존재합니다.

  1. Comparable 인터페이스를 구현하여 클래스 만든 후 CompareTo 메서드 구현
  2. Arrays.sort()에 인자로 Comparator 객체 구현. 이 때 람다를 사용하던지 익명클래스 생성

👉 1번 방법

👉 2번 방법

Arrays.sort(arr, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        if(o1[0] == o2[0]) return o1[1] - o2[1];
        else return o1[0] - o2[0];
    }
});

이때 intint[]의 차이를 생각하고, o1o1[0] 차이를 생각해야 함.

참조

[백준] 11650번 : 좌표 정렬하기 - JAVA [자바]

profile
개발 노트

0개의 댓글