원래 주 언어인 C++로만 코딩 테스트 문제를 풀었는데, 이번에 Spring BootCamp에 들어오고 Java로 문제를 풀기 시작했다. 꽤 오랜만에 Java를 사용해보니 너무 어색하고 기억이 안나는게 많았다. Level 1 문제를 풀며 많이 사용되는 것들을 복습해보자!
1. 변수의 형 변환
String to
String to Int
String str = "12345";
int integer_val1 = Integer.parseInt(str); // 1번째 방법
int integer_val2 = Integer.valueOf(str); // 2번째 방법
String to Double,Float
String str = "12345";
double double_val = Double.valueOf(str);
Float float_val = Float.valueOf(str);
String to Long
String str = "12345";
long long_val = Long.parseLong(str);
String to CharacterArray
String str = "12345";
char[] chArr = str.toCharArray();
String to Character
String str = "12345";
char ch = str.charAt(0); // str의 0 위치의 값을 반환
Int to
Int to String
int integer_val = 12345;
String str1 = String.valueOf(integer_val); // 1번째 방법
String str2 = Integer.toString(integer_val); // 2번째 방법
Int to Long
int integer_val = 12345;
long long_val = Long.valueOf(integer_val);
Int to Double, Float
int integer_val = 12345;
double double_val = Double.valueOf(integer_val);
float float_val = Float.valueOf(integer_val);
Int to Char
int integer_val = 5;
char ch = (char)(integer_val + '0'); // ASCII Code를 이용해 연산
Long to
Long to String
long long_val = 12345;
String str1 = Long.toString(long_val);
String str2 = String.valueOf(long_val);
Long to Int
long long_val = 12345;
int integer_val = long_val.intValue();
Long to Double
long long_val = 12345;
double double_val = long_val.doubleValue();
Double, Float to
Double, Float to String
double double_val = 12345;
float float_val = 12345;
String str1 = Double.valueOf(double_val);
String str2 = Float.valueOf(float_val);
Double, Float to Int
double double_val = 12345;
float float_val = 12345;
int integer_val1 = (int)double_val;
int integer_val2 = (int)float_val;
int integer_val3 = (int)Math.round(double_val); // 다른 방법
Double to Long
double double_val = 12345;
Long long_val = (new Double(double_val)).longValue();
Char to
Char to String
char ch = 'a';
String str = Character.toString(ch);
Char to Int
char ch = '7';
int integer_val1 = (int)(ch - '0'); // ASCII Code를 이용해 연산
int integer_val2 = Character.getNumericValue(ch);
Char to Long
char ch = '9';
long long_val = (long)ch;
2. 배열의 정렬
정적 배열 (Static Array)
일반적인 배열을 의미하며, 실제 데이터(원소)를 저장하기 전에 현재 사용중이지 않은 연속적인 메모리들을 미리 예약해두고 시작한다.
삭제 및 추가가 불가능하며, 정의에 따라 계산된 메모리의 값을 연속적으로 예약한다.
시간 복잡도 : O(1)
오름차순 정렬 (int)
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] intArr = {3, 5, 1, 4, 2};
Arrays.sort(intArr); // 오름차순 정렬
// 오름차순 정렬 후: [1, 2, 3, 4, 5]
}
}
내림차순 정렬 (int)
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
int[] intArr = {3, 5, 1, 4, 2};
// int 는 내림차순 정렬이 안되기 때문에 Integer 타입의 객체로 변경해줘야 함
Integer[] changeArr = new Integer(intArr.length);
for(int i = 0; i < intArr.length; i++) {
changeArr[i] = intArr[i]; // changeArr에 intArr 값을 넣어줌
}
Arrays.sort(changeArr, Comparator.reverseOrder()); // 내림차순 정렬
// 내림차순 정렬 후: [5, 4, 3, 2, 1]
}
}
동적 배열 (Dynamic Array)
데이터의 삭제와 추가가 가능하며, 삽입될 데이터를 미리 정의할 필요가 없다.
현재 리스트가 담을 수 없는 길이의 데이터가 들어온다면, 현재 리스트 길이의 2배가 되는 배열을 새로 만들게 된다.
시간 복잡도
배열에 아직 데이터를 저장할 수 있는 공간이 존재해 배열의 길이를 늘려줄 필요가 없을 때 : O(1)
배열이 꽉 차서 더 긴 새 배열을 만들어줘야 할 때 : O(n)
오름차순 정렬 (int)
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
// 동적 배열 생성
ArrayList<Integer> dynamicArr = new ArrayList<>();
// 값 추가
dynamicArr.add(5);
dynamicArr.add(2);
dynamicArr.add(3);
dynamicArr.add(1);
dynamicArr.add(4);
// 오름차순으로 정렬
Collections.sort(dynamicArr);
// 오름차순 정렬 후: [1, 2, 3, 4, 5]
}
}