[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.대각선