[TIL] 코딩테스트 필요한 내용 정리
키 가져오기
for (String key : map.keySet()) {
System.out.println(key);
}
값 가져오기
값만 가져오고 싶은 경우 values() 메서드를 사용합니다.
for (String key : map.values()) {
System.out.println(key);
}
Java 8 이후부터는 List에서는 sort() 메소드를 호출하여 정렬할 수 있습니다.
list.sort(Comparator.naturalOrder()); // 오름차순
list.sort(Collections.reverseOrder()); // 내림차순
answer = list.stream().mapToInt(Integer::intValue).toArray(); // list => int[]배열에 값 넣기
정렬
// ArrayList 준비
ArrayList<String> list = new ArrayList<>(Arrays.asList("C", "A", "B", "a"));
System.out.println("원본 : " + list); // [C, A, B, a]
// 오름차순으로 정렬
list.sort(Comparator.naturalOrder());
System.out.println("오름차순 : " + list); // [A, B, C, a]
// 내림차순으로 정렬
list.sort(Comparator.reverseOrder());
System.out.println("내림차순 : " + list); // [a, C, B, A]
// 대소문자 구분없이 오름차순 정렬
list.sort(String.CASE_INSENSITIVE_ORDER);
System.out.println("대소문자 구분없이 오름차순 : " + list); // [a, A, B, C]
// 대소문자 구분없이 내림차순 정렬
list.sort(Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
System.out.println("대소문자 구분없이 내림차순 : " + list); // [C, B, a, A]
데이터의 용도에 따라 빠른 탐색을 위해서 ArrayList를 사용할 때도 있고,
삽입/삭제를 위해 LinkedList를 사용해야 하는 경우도 있습니다.
ArrayList => String[] 배열로 변환.
answer.toArray(new String[answer.size()])
유클리드 호제법
if(a%b == 0) {
return b;
} else {
//최대공약수
GCD(b, a%b);
}
//최소 공배수 => answer * arr[i] / gcd;
//최소 공배수 => a * b / gcd;
Integer.toBinaryString(num); // num = 6이면 6 => 2진수로 변경
이진탐색
이진탐색의 핵심은 중간지점을 기준으로 비교하면서 새로운 탐색범위를 설정하는것
이진탐색 고려 1. 큰숫자 , 2. 최대/최소 등.
맨처음에 정렬을 해준다
이진탐색 기본구현코드
int BinarySearch(int arr[], int target) {
int start = 0;
int end = arr.length - 1;
int mid;
while(start <= end) {
mid = (start + end) / 2;
if (arr[mid] >= target)
start = mid +1;
else (arr[mid] > target)
end = mid - 1;
}
return mid;
}
삼각달팽이 - 구현문제 : 1.아래 2.옆 3.대각선