avatar
kirise

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

코딩테스트를 위한 자바 벼락치기
Java코딩테스트
a month ago
·
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;
}		


- 컬렉션 아티클






할 수 이떠