728x90

Programming/CodingTest 8

CodingTest - 정렬 (Comparable, compareTo, Collections.sort)

Comparable : 해당 인터페이스는 객체의 비교를 제공하기 위해 구현된다. compareTo() : Comparable 인터페이스의 일부로, 비교하려는 두 객체를 인자로 받아 비교 결과를 반환한다. Collections.sort : 해당 메서드를 사용하여 리스트의 요소를 정렬할 때, 해당 요소들의 compareTo 메서드가 호출되어 정렬이 수행된다. - 기본 구조 public int compareTo(Integer other) { return this.value - other.value; } - Example import java.util.*; class Point implements Comparable{ public int x, y; Point(int x, int y){ this.x=x; this..

CodingTest - Recursive, Tree, Graph(DFS, BFS 기초)

1. 재귀 함수 2. DFS 깊이 우선 탐색 2.1. 스텍 프레임 3. BFS 레벨, 너비 우선 탐색 - 재귀 함수 - 재귀 함수는 자기 자신을 호출하는 함수를 말한다. - 기본적으로 if else를 통해 특정 조건에 자기 자신을 호출하여 원하는 값을 도출해낸다. - 재귀 함수를 이용한 팩토리얼 import java.util.Scanner; class Main { public int DFS(int v) { if (v == 1) { return 1; } else { return v * DFS(v - 1); } } public static void main(String[] args) { Main main = new Main(); Scanner scanner = new Scanner(System.in); in..

CodingTest - Sorting and Searching(정렬, 이분 검색과 결정 알고리즘)

1. 선택 정렬 2. 버블 정렬 3. 삽입 정렬 4. 삽입 정렬 예제 5. 이분 검색, 결정 알고리즘 6. 이분 검색, 결정 알고리즘 예제 - 선택 정렬 1. 선택 정렬은 정렬 알고리즘 중 하나이다. 2. n(n-1)/2번, 즉 O(n^2)의 시간 복잡도를 가지므로 대규모 데이터에 대해 효율적이지 않다. - 버블 정렬 1. 버블 정렬은 정렬 알고리즘 중 하나이다. 2. 시간 복잡도가 O(n^2)의 시간 복잡도를 가지므로 선택 정렬과 마찬가지로 대규모 데이터에 대해 효율적이지 않다. for(int i=0; itmp) arr[j+1]=arr[j]; else break; } arr[j+1]=tmp; } return arr; 1. 배열의 두번째 인덱스를 기준으로 잡는다. 2. 기준 인덱스보다 작은 인덱스 중 기..

CodingTest - HashMap, TreeSet (해쉬, 정렬지원 Set)

4.1 map.put(x, map.getOrDefault(x, 0)+1); - map.get()하면 해당 key의 value 값을 가져오는데 getOrDefault를 하면 해당 key의 value가 없으면 defalut로 지정한 값이 입력된다. (위에서는 0에 해당한다.) for (char key : map.keySet()) { // System.out.println(key + " " + map.get(key)); if (map.get(key) > max) { max = map.get(key); answer = key; } } - 향상된 for문을 이용하여 map의 key값을 순회하고 싶아면 keySet() 함수를 사용하면 된다. System.out.println(map.containsKey('A'));..

CodingTest - Two Pointers, Sliding Window

- Two Pointer Algorithm 1. 배열 또는 리스트에서 두 개의 포인터를 사용하여 원하는 조건을 만족하는 요소나 부분 배열을 찾는 데 사용되는 알고리즘이다. 이 알고리즘은 주로 정렬된 배열 또는 리스트에서 사용되며, 시간 복잡도를 개선하기 위한 효율적인 방법 중 하나이다. - Sliding Window 1. 배열 또는 문자열과 같은 순차적인 데이터 구조를 처리하고 여러 데이터 포인트의 부분집합을 검사하거나 연산하는데 사용되는 알고리즘 기법이다. 3_1 오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성하세요. - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class Mai..

CodingTest - Array(1, 2차원 배열) / 2

8. N명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요. 같은 점수가 입력될 경우 높은 등수로 동일 처리한다. 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다. - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class Main { public int[] solution(int iNum, int[] ints) { int[] answer = new int[iNum]; int tmp = 1; for (int i = 0; i < iNum; i++) { for (int j = 0; j < iNum; j++) { if (ints[i] < in..

CodingTest - Array(1, 2차원 배열) / 1

1. N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요. (첫 번째 수는 무조건 출력한다) - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class sec2_1 { public ArrayList solution(int num, int[] arr) { ArrayList answer = new ArrayList(); answer.add(arr[0]); for (int i = 0; i < arr.length - 1; i++) { if (arr[i] < arr[i + 1]) { answer.add(arr[i + 1]); } } return answer; } public static void sec2_..

728x90