재채기는 H

JAVA 코딩테스트 IDE사용 못할 경우, 자주 사용하는 함수 정리 본문

java

JAVA 코딩테스트 IDE사용 못할 경우, 자주 사용하는 함수 정리

에취~H 2022. 7. 17. 13:30
반응형

라이브러리 선언

import java.util.*;
import java.io.*;
// Stream을 사용하기 위해선 import java.util.stream.*; 추가하자
// Entry를 사용하기 위해선 import java.util.Map.*; 추가하자

배열

int arr[] = {10, 8, 11, 2, 3, 0};

// 1. 오름차순 {0, 2, 3, 8, 10, 11}
Arrays.sort(arr1);

// 2. 내림차순 {11, 10, 8, 3, 2, 0}
Arrays.sort(arr1, Collections.reverseOrder());
//주의점! Object상속으로 Wrapper클래스로 Boxing해주어야한다.
//-- Integer[] temp = Arrays.stream(arr1).boxed().toArray(Integer[]::new);
//-- Arrays.sort(temp, Collections.reverseOrder());

// 3. 일부만 정렬 {2, 8, 11, 10, 3, 0} (0~4만 정렬)
Arrays.sort(arr1, 0, 4)

// 4. 오름차순 정렬하면 binary search로 특정 값을 찾을 수 있다. inex값
// 주의) 정렬시킨 다음의 인덱스를 추출하는거임
Arrays.sort(arr1);
int indx = Arrays.binarySearch(arr1, 2);

// 5. 배열을 ArrayList로 변환할 때
List<Integer> list = Arrays.asList(arr1);

// 6. 배열의 특정 범위 자르기 (범위 복사 0,1,2 )
int[] tmp = Arrays.copyOfRange(arr1, 0, 3);

// 7. String을 문자배열로
char[] c = str.toCharArray();

// 8. String 배열로 
String str = "12345";
String[] Arr = str.split(""); //[1,2,3,4,5]

String

// 1. String값 변경
String name="starfucks";
String newname=name.substring(0,4)+'b'+name.substring(5);

System.out.pirntln(newname); // starbucks
============================================================================

// 2. 문자열 뒤집기
String str = "Reverse";
String str = new StringBuilder(words).reverse().toString();
System.out.println(str); 

[출력]
esreveR
    
// 3. 문자열 자르기
String str="1234567";
str.substring(3); // "4567"
str.substring(2,5) // "345"

length / length() / size()

  • length: 배열의 길이 (arr.length)
  • length(): **String** related object (str.length())
  • size(): **Collections** object (list.size())

ArrayList 초기화

  • ArrayList<Integer> list = new ArrayList<>(Arrays.asList(2,3,4));
  • // 1. 문자열 배열일 떄
    String[] arr = { "A", "B", "C" };         // 배열 -> List로 변환        
    List<String> list = new ArrayList<>(Arrays.asList(arr));
  • //2. int형 배열일 때
    int[] arr = { 1, 2, 3 };         // int -> List        
    List<Integer> intList = Arrays.stream(arr).boxed().collect(Collectors.toList()); 
    
    System.out.println(intList.size()); // 3        
    System.out.println(intList); // [1, 2, 3]

ArrayList 배열 중복없이 초기화

  • ArrayList<Integer> list = new ArrayList<>();
    
    for(int value : arr){
    	if(list.indexOf(value) < 0){
    		list.add(value);
    	}
    }

List 깊은 복사

  • ArrayList<Integer> list1 = new ArrayList<>();
    ArrayList<Integer> list2 = new ArrayList<>();
    
    list2.addAll(list1);

Set을 List로 변환

  • Set<String> set = new HashSet<>();
    List<String> list = new ArrayList<>(set);

List정렬

  • ArrayList<Integer> list = new ArrayList<>();
    
    Collections.sort(list);

PriorityQueue 내림차순

  • PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
  • import java.io.IOException;
    import java.util.PriorityQueue;
    public class PQ {
    
        static class Node{
            int y;
            int x;
    
            Node(int y,int x){
                this.y=y;
                this.x=x;
            }
    
            public int compareTo(Node p) {
                if(this.y < p.x) {
                    return -1; // 오름차순
                }
                else if(this.y == p.y) {
                    if(this.x < p.x) {
                        return -1;
                    }
                }
                return 1;
            }
        }
    
        public static void main(String[] args) throws IOException{
    
            PriorityQueue<Node> pq1=new PriorityQueue<>(Node::compareTo);
            pq1.add(new Node(1,2));
            pq1.add(new Node(1,1));
            pq1.add(new Node(2,3));
            pq1.add(new Node(2,1));
    
            while(!pq1.isEmpty()){
                Node node=pq1.peek();
                System.out.println(node.y+" "+node.x);
                pq1.remove();
            }
        }
    }
    
    [출력]
    1 1
    1 2
    2 1
    2 3

HashMap 모든 Key값 가져오기

  • for(String key : hashMap.keySet()){
         System.out.println("키 : " + key);
    }

HashMap 모든 Key값과 Value값 가져오기

  • for(Entry<String, Integer> elem : hashMap.entrySet()){
         System.out.println("키 : " + elem.getKey() + "값 : " + elem.getValue());
    }
  • map.forEach((k, v) -> System.out.println(k + ": " + v));

HashMap 최대/최소 Key값 가져오기

  • Map<Integer, Integer> map = new HashMap<Integer, Integer>();        
    map.put(1, 5);        
    map.put(2, 70);        
    map.put(3, 50);         
    
    // Max Key        
    Integer maxKey = Collections.max(map.keySet());         
    // Min Key        
    Integer minKey = Collections.min(map.keySet());         
    
    // 결과 출력        
    System.out.println(maxKey); // 3        
    System.out.println(minKey); // 1

HashMap 최대/최소 Value값 가져오기

  • Map<Integer, Integer> map = new HashMap<Integer, Integer>();        
    map.put(1, 5);        
    map.put(2, 70);        
    map.put(3, 50);         
    
    // Max Value        
    Integer maxVal = Collections.max(map.value());         
    // Min Value        
    Integer minVal = Collections.min(map.value());         
    
    // 결과 출력        
    System.out.println(maxVal); // 70        
    System.out.println(minVal); // 3

HashMap 최대/최소 Value기준 Key,Value 찾기

  • // HashMap 준비        
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();        
    map.put(1, 5);        
    map.put(2, 70);        
    map.put(3, 50);         
    
    // Comparator 정의        
    Comparator<Entry<Integer, Integer>> comparator = new Comparator<Entry<Integer, Integer>>() {            @Override            
        public int compare(Entry<Integer, Integer> e1, Entry<Integer, Integer> e2) {
            return e1.getValue().compareTo(e2.getValue());
        }        
    };         
    
    // Max Value의 key, value        
    Entry<Integer, Integer> maxEntry = Collections.max(map.entrySet(), comparator);         
    // Min Value의 key, value        
    Entry<Integer, Integer> minEntry = Collections.min(map.entrySet(), comparator);         
    
    // 결과 출력        
    System.out.println(maxEntry.getKey() + " : " + maxEntry.getValue()); // 2 : 70
    System.out.println(minEntry.getKey() + " : " + minEntry.getValue()); // 1 : 5

 

프로그래머스 사이트에서 코딩테스트를 볼 경우, 개인의 IDE를 사용하지 못하는 경우가 있다.

 

자동 함수 어시스턴트가 없으므로, 알고 있는 문제여도 구현하는데 어려움을 겪는다.

 

위의 정리한 내용만큼은 최소한 암기하고 코테를 준비하자.

반응형
Comments