프로그래밍/코딩테스트 11

오답노트

※ 나중에 다시 풀어봐야하는 문제 정리 ※  오답 노트세로읽기색종이괄호 백준 푸는 방법StringTokenizer() vs split()  입력 데이터가 주어지지 않는 경우BufferedReader.readLine() 메서드는 파일 끝에 도달하면 null을 반환import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { String line; while ((line = br.readLine()) != null) { } }}

[백준] 스택 큐 덱 문제집

다시 보면 좋은 코드stack의 값을 하나씩 출력하는 코드for (int i = stack.size() - 1; i >= 0; i--) { System.out.println(stack.get(i));} 문제집1874번: 스택으로 오름차순 수열 만들기  - 실버 5// 작성중입니다. 28278번: 스택 2  - 실버 4Stack 클래스가 처음이라 메서드를 확인하면서 풀었다...!!import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamR..

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

교훈: 문제를 자세하게 읽자.. 문제집★는 다시 풀어야 하는 문제 입니다.2738번: 행렬 덧셈import java.util.*;import java.io.*;public class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()..

[백준] 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..