코딩테스트를 자바로 준비하는 분들을 위해 알고리즘 문제를 풀 때 유용하고 편리한 메서드들을 소개하고자 합니다.
이를 통해 좀 더 간결하고 보기 편한 코드를 만들 수 있습니다.
❗️지속적으로 업데이트 될 예정
- 문자 1개 관련
- 문자열 처리
- 자료형 파싱
- 좌표 생성 및 정렬
⚠️ 해당 메서드들은 전부 자바 필수 요소인 java.lang
패키지 내에 존재하는 것들만 소개합니다.
👉🏼 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를 출력합니다.
만일, 숫자와 다른 문자를 구별해야 할 상황이 있을 때 사용하면 편리합니다.
👉 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를 이용하여 손쉽게 문자를 해당 인덱스에 그대로 교체할 수 있습니다.
문자열(String)을 바꾸고 싶을 때 사용합니다.
각 참조 타입 static 클래스에 내장되있는 parse**()
혹은 valueOf()
메서드를 사용하면 됩니다.
👉 Long.parseLong(String s)
👉 Integer.parseInt(String s)
자바에서 좌표를 생성하고자 하는경우, 우선 2차원 배열을 생성해야 합니다.
2차원 좌표라 가정하겠습니다.
int[][] arr = new int[N][2];
이후 해당 좌표(2차원 배열)을 정렬하는 메서드를 자바에서 제공해주는데 2가지 방법이 존재합니다.
👉 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];
}
});
이때 int
와 int[]
의 차이를 생각하고, o1
과 o1[0]
차이를 생각해야 함.