프로그래밍 41

[자바 문법] Map 인터페이스

💡 Java Collection Framework(JCF) 에 대해 작성 했지만 Map에 대해 깊게 작성해 보자! Map 인터페이스 종류 01. HashMap 02. TreeMap 값을 자동으로 오름차순 정렬 03. LinkedHashMap key의 순서가 있는 경우 Map 출력을 위해 Map 타입의 변수를 아래와 같이 준비해보자! import java.util.*; import java.io.*; public class Solution { public class main(String[] arg) { // Map 생성 Map map = new HashMap(); // Map의 value 안에 배열 넣기 Map mapArray = new HashMap(); // 입력 값 받기 BufferedReader b..

[자바 문법] String 클래스

01. Contains 내부적으로 indexOf 메서드를 사용해서 구현하고 있음. public boolean contains(CharSequence sequence) { return indexOf(sequence.toString()) > -1; } 예시) 프로그래머스 입문 - 문자열 안에 문자열 class Solution { public int solution(String str1, String str2) { int answer = 0; if (str1.contains(str2)) answer = 1; else answer =2; return answer; } } 02. indexOf / lastIndexOf class Solution { public int solution(String str1, Str..

[백준] 1차원 배열 문제집 (완료)

다시 보면 좋은 코드배열을 뒤집으면서 바꾸는 코드// 예시)// [1, 2, 3, 4, 5] => [5, 4, 3, 2, 1]for (int j=a, k=b; j   배열에서 첫 번째 값부터 뒤지면서 찾는 최대값 최소값// 상황에 따라 min/max 변수의 값을 초기화 하고// 모든 변수랑 비교하면서 min/max 변수를 업데이트함.// 최소값 구하기int min = numbers[0];for(int i = 1; i max) { max = numbers[i]; }} 문제집10807번: 개수 세기 - 브론즈 5chatGPT가 Stream으로 처리한 정답(Stream 공부를 해야겠다..)import java.io.*;import java.util.*;public class Main { ..

[탐색] 이진 탐색(Binary Search)

👉 특징 데이터가 정렬되어 있는 상테에서 원하는 값을 찾아내는 알고리즘 대 상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾는다. 👉 코드 현재 데이터셋의 중앙값(median)을 선택한다. 중앙값 > 타깃 데이터(target data)일 때, 중앙 값 기준으로 왼쪽 데이터셋을 선택한다. 중앙값 < 타깃 데이터일 때, 중앙값 기준으로 오른쪽 데이터셋을 선택한다. 과정 1~3을 반복하다가 중앙값 == 타깃 데이터일 때 탐색을 종료한다. public class test { static int[] arr; public static void main(String[] args) { arr = new int[]{5, 7, 8, 15, 20, 38, 52, 58, 77}; bin..

[정렬] 병합 정렬(merge sort)

참고 영상 사이트는 여기 입니다. 👉 특징 👉 코드 전체 어떤 느낌인지는 알겠지만, 코드적으로 확 와닿지는 않는다!! public class Test { private static void mergeSort(int[] arr) { int[] tmp = new int[arr.length]; mergeSort(arr, tmp, 0, arr.length - 1); } private static void mergeSort(int[] arr, int[] tmp, int start, int mid, int end) { if (start < end) { int mid = (start + end) / 2; mergeSort(arr, tmp, start, mid); mergeSort(arr, tmp, mid + 1, m..

[탐색] 너비 우선 탐색(BFS)

💡 먼저 부족하지만 저의 글을 읽어주셔서 감사드립니다!!! 참고 정도로 해주셨으면 좋겠습니다. 해당 강의는 여기 사이트 입니다. 너비 우선 탐색(Breadth First Search) 시작 노드에서 인접 노드를 모두 방문하고, 방문한 노드에서 인접 노드를 모두 방문하는 것을 반복 그래프 순회 방법 중 하나 간선에 가중치를 줄 수 있다? 👉 큐(Queue) 보통 Queue는 LinkedList 로 만든다. public class App { static final int MAX_N = 10; // 문제에 따라서 최대 노드 개수를 정해줘야 한다. // 어떤 기준으로 정할까? static int vertex, line; static int[][] Graph = new int[MAX_N][MAX_N]; // 인접..

[탐색] 깊이 우선 탐색(DFS)

💡 먼저 부족하지만 저의 글을 읽어주셔서 감사드립니다!!! 참고 정도로 해주셨으면 좋겠습니다. 해당 강의는 여기 사이트 입니다. 깊이 우선 탐색(Depth-First Search) 하나의 노드에서 시작해 마지막 지점까지 계속 그래프를 탐색 미로찾기, 당신을 알 수 있는 친구 찾기 등 내가 강의를 들으면서 생각한 중요한 부분은 노드(node)라고 불리는 각 지점들과 지점들을 연결하는 간선(edge) 이다. 인접행렬의 1과 0 즉, 연결이 되어있으면 1 아니면 0을 이해하면 된다.! 이미지에서와 같이 0부터시작하여 1번 → 3번 → 4번 → 2번 순서대로 간다. 여기서 어떻게 우리는 1번에서 3번 4번으로 갈 수 있을까 생각하는데 코드를 한 번 봤으면 좋겠다. if (!visited[next] && Grap..

[정렬] 삽입정렬(Insertion Sort)

💡 해당 글은 여기 블로그 를 참고하여 작성했습니다. 👉 특징 해당 배열 안에서 교환하는 방식으로, 다른 메모리 공간이 필요하지 않다. ⇒ 제자리 정렬(in-place sorting) 👉 나만의 코드 해석 해당 코드에서 중요하다고 생각 되는 변수는 prev 이다. Process 두 개의 인덱스 값을 기준으로 움직안다. prev, index for 문의 index 값을 기준으로 이전 값들을 비교한다. int temp = arr[index]; arr[prev] > temp 만약, 이전 값(prev)이 큰 경우에는 prev + 1 의 인덱스 위치에 prev 인덱스의 값을 넣어준다. arr[prev + 1] = arr[prev]; 그리고 prev--; 를 해줘서 한 칸 이전으로 움직인다. 마지막으로 prev +..

[자바 문법] Java Collection Framework(JCF)

Hierarchy of Collection Framework (계층적 콜렉션 프레임워크) 인터페이스는 List / Set / Map / Queue List ArrayList, LinkedList (구현) 순서가 있고, 중복을 허용 O Set SortedSet(상속) 순서가 없고, 중복을 허용 X Queue Deque(상속) FIFO(First In First Out) Map HashTable LinkedHashMap Key의 순서 보장이 필요한 경우 HashMap Key의 순서 보장이 필요없는 경우 SortedMap(Extends) TreeMap 여러 특징 중 일단, 저장과 동시에 자동 오름차순으로 정렬이 된다. Iterator (작성필요) 참고 사이트 https://testingpool.com/coll..

[Java] 큐(Queue)

★내용 추가 필요★ 참고 사이트 https://st-lab.tistory.com/181 큐(Queue) 자바에서 제공하 큐는 인터페이스 가장 큰 특징은 ⭐FIFO(First In First Out) ⭐이다. 👉 큐 인터페이스를 구현한 클래스 PriorityQueue(우선순위 큐) ArrayDeque(배열 양방향 큐) LinkedList(연결리스트) ⇒ List, Deque, Queue 로 상속 받을 수 있다. ArrayList 랑 헷갈릴 수는데 그 외, 👉 큐 인터페이스의 메서드 인텔리제이 등의 IDE에 들어가서 인터페이스 클릭을 해보자! add offer 마지막에 요소를 추가, 가득 차면 에러 던짐 ⇒ add 마지막에 요소를 추가, 가득 차면 에러 안 던짐 ⇒ offer remove pool 첫 번째 ..