• Feed
  • Explore
  • Ranking
/
/
    코딩테스트

    [Java] 코딩테스트 벼락치기 정리 2편

    코딩테스트를 위한 자바 벼락치기
    Java코딩테스트
    감
    감자그라탕은감자
    2024.11.19
    ·
    5 min read

    수학 관련 함수

    Math.pow(a, b); // a의 b제곱
    Math.sqrt(a); // a의 제곱근
    Arrays.stream(arr).sum(); // 배열 arr의 합 
    // 배열의 평균, average()가 리턴한 값이 없을 경우, null 대신 0 반환
    double avg = Arrays.stream(arr).average().orElse(0);
    Math.min(a,b); // a,b 중 작은 값 리턴
    Math.max(a,b); // a,b 중 큰 값 리턴

    Character 관련 함수

    char c = 'A';
    char k = 'B';
    Character.toString(c); // char형 변수 c를 String으로
    Character.compare(c, k); // 비교 같으면 0출력, 다르면 c-k 반환 : -1
    Character.isUpperCase(c); // c가 대문자면 true
    Character.isLowerCase(k); // k가 소문자면 true
    Character.isDigit(c); // c가 숫자면 true
    Character.isAlphabetic(k); // k가 알파벳이면 true

    리스트와 배열 형변환

    // String 배열 -> String 리스트
    String[] arr = {"A", "B", "C"};
    List<String> arrList = new ArrayList<>(Arrays.asList(arr));
    
    // String 리스트 -> String 배열
    String[] arr2 = arrList.stream().toArray(String[]::new);
    
    // int 배열 -> int 리스트
    int[] intArr = new int[]{1, 4, 3, 5, 2};
    List<Integer> intList = Arrays.stream(intArr).boxed().collect(Collectors.toList());
    Collections.reverse(intList); // 뒤집기
    
    // int 리스트 -> int 배열
    int[] intArr2 = intList.stream().mapToInt(i -> i).toArray();

    Collections 관련 함수

    int[] intArr = new int[]{1, 4, 3, 5, 2};
    List<Integer> intList = Arrays.stream(intArr).boxed().collect(Collectors.toList());
    // List<Integer> intList = Arrays.stream(intArr).boxed().sorted().collect(Collectors.toList());
    
    Collections.sort(intList); // 오름차순
    Collections.sort(intList, Collections.reverseOrder()); // 내림차순
    Collections.reverse(intList); // 뒤집기
    Collections.frequency(intList, 2);
    // 이분탐색 : 해당 값이 있으면 해당 인덱스 반환, 없으면 해당 값보다 큰 첫번째 위치 반환 : -1 (값 1의 인덱스)
    // reverse 했으므로 인덱스값이 마이너스가 붙어서 나옴
    Collections.binarySearch(intList, -1);

    Stack 관련 함수

    Stack<Integer> stack = new Stack<>();
    stack.push(1); // 값 넣기
    stack.contains(1); // 스택에 해당 값이 포함되어있으면 true
    stack.peek(); // stack top 반환, 비어있으면 null 반환
    stack.pop(); // 값 빼고, 반환
    stack.clear(); // 값 모두 삭제
    stack.size();
    stack.empty(); // 스택이 비어있으면 true

    Queue 관련 함수

    // 일반 큐
    Queue<Integer> queue = new LinkedList<>();
    // 우선 순위 큐 : 기본으로 낮은 숫자가 우선 순위를 가짐
    PriorityQueue<Integer> pq = new PriorityQueue<>();
    // 높은 숫자가 우선 순위를 가지도록 선언
    PriorityQueue<Integer> pq2 = new PriorityQueue<>(Collections.reverseOrder());
    queue.add(1); // 큐가 꽉 찬 경우 에러 발생
    queue.offer(2); // 큐가 꽉 찬 경우 false 반환
    queue.poll(); // 첫번째 값 반환, 비어있으면 null 반환
    queue.peek(); // 첫번째 값 출력 (제거X)
    queue.remove(); // 첫번째 값 제거
    queue.clear(); // 값 모두 삭제

    HashMap 관련 함수

    • HashMap : <key, value> 쌍 출력하면, 순서가 안 지켜짐

    • LinkedHashMap : 키 값이 입력 순으로 정렬되므로 순서가 지켜짐

    • TreeMap : 키 값이 알파벳순(오름차순)으로 정렬됨

    HashMap<Integer, String> map = new HashMap<>();
    LinkedHashMap<Integer, String> map = new LinkedHashMap<>();
    TreeMap<Integer, String> map = new TreeMap<>();
    
    map.put(1, "사과");
    map.remove(1); // key값으로 요소 삭제
    map.clear(); // 전체 삭제
    map.containsKey(1); // key 값 중 해당 값이 있으면 true
    map.containsValue("사과"); // value 값 중 해당 값이 있으면 true

    출력하는 법도 익혀두자.

    LinkedHashMap<Integer, String> map = new LinkedHashMap<>();
    map.put(2, "바나나");
    map.put(1, "사과");
    		
    // 출력 방법 1
    for(Integer i : map.keySet()) {
        System.out.println(i + map.get(i));
    }
    		
    // 출력 방법 2
    for(Map.Entry<Integer, String> entry : map.entrySet()) {
        System.out.println(entry.getKey() + entry.getValue());
    }
    		
    // result : 2바나나 1사과

    HashSet 관련 함수

    HashSet<Integer> set = new HashSet<>();
    LinkedHashSet<Integer> set = new LinkedHashSet<>();
    TreeSet<Integer> set = new TreeSet<>();
    
    set.add(1);
    set.add(2);
    set.contains(1);
    set2.add(1);
    set2.add(4);
    set.remove(1); // 값 삭제
    set.removeAll(set2); // set 데이터 중 set2에 들어있는 데이터 삭제
    set.retainAll(set2); // set 데이터 중 set2에 들어있지 않은 데이터 삭제
    set.clear();

    Set도 출력하는 법을 익혀두자.

    HashSet<Integer> set = new HashSet<>();
    set.add(1);
    set.add(2);
    
    // 출력방법 1
    for (Integer item : set) {
        System.out.println(item);
    }
    
    // 출력방법 2
    Iterator<Integer> iter = set.iterator();
    while (iter.hasNext()) {
        System.out.println(iter.next());
    }
    		
    // result : 1 2
    
    

    알아두면 좋은 기술

    • ArrayList의 indexOf: 특정 value가 없으면 -1 반환

    • ArrayList 값을 하나씩 가져와서 int 배열에 넣을 때 : arr[i] = list.get(i).intValue();

    • 특정 정수를 잘라서 사용하고 싶을 때

    while(value != 0) {
        remain = value % 10;
        value /= 10;
    }		







    - 컬렉션 아티클