백준 오답노트

백준 오답노트

백준: 15864 사다리 조작 / 틀린 이유

처음 접근한 코드 import java.util.*; import java.io.*; public class Fail { public static int n, m, h; public static int result; public static int[][] arr; public static int[][] map; public static boolean[][] visit; public static Queue q = new LinkedList(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenize..

백준 오답노트/백트래킹

2차원 배열 복제를 실수하지 말자.

a라는 2차원 배열에 값이 들어있다고 가정하자. b라는 배열에 a의 값을 그대로 사용하고 싶었는데 b = a; 이런 식으로 사용했었다 그러나 이 방식은 틀린 방식이다. for (int i = 0; i < n; i++) { b[i] = a[i].clone(); } 이렇게 사용해야 된다!

백준 오답노트/백트래킹

백준 - 시뮬레이션 15686번 치킨 배달 / 오답

처음 접근한 풀이 구현만 해보자! 라는 생각으로 접근한BFS와 DFS를 이용한 풀이 import java.io.*; import java.util.*; public class Main { public static int n, m; // n: 크기, m: 최대 치킨 집 개수 public static int min = Integer.MAX_VALUE; public static int[] resultMin; public static int[][] arr; public static int[][] house; public static boolean[][] visit; public static Queue q = new LinkedList(); public static void main(String[] args) t..

백준 오답노트/그래프와 순회

백준: 숨바꼭질(1697)

처음 코드 import java.util.*; import java.io.*; public class Main { public static int n, k; // n: 수빈이 위치, k: 동생 위치 public static int[] arr = new int[100_001]; // 좌표 public static boolean[] visit = new boolean[100_001]; public static int[] col = {1, -1}; public static Queue q = new LinkedList(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new Inp..

백준 오답노트/트리

백준 - 트리 순회 1991번 문제 / DFS풀이

전위 순회, 중위 순회, 후위 순회란 무엇인가? 전위 순회 루트 노드가 가장 먼저 나오는 순회 방식 Root -> Left -> Right 자기 자신 -> 왼쪽 자식을 방문 -> 오른쪽 자식을 방문 중위 순회 각 루트 노드가 자식 노드의 사이에 위치 Left -> Root -> Right 왼쪽 자식을 방문 -> 자기 자신 -> 오른쪽 자식을 방문 후위 순회 루트 노드가 가장 마지막에 출력 Left -> Right -> Root 왼쪽 자식을 방문 -> 오른쪽 자식을 방문 -> 자기 자신 접근 방법 DFS를 이용한 구현 왼쪽, 오른쪽을 구분할 수 있는 2차원 배열 생성 배열 안에 값을 알파벳 말고 숫자로 담은 후 출력만 알파벳으로! 구현 전위 순회: DFS를 시작했을 때, 그 값을 먼저 출력하고 계속 파고드..

백준 오답노트/그래프와 순회

백준 - 그래프와 순회 나이트의 이동 7652문제 / BFS풀이, 오답

첫째 줄에는 체스판의 한 변의 길이 둘째 줄에는 나이트가 현재 있는 칸 셋재 줄에는 나이트가 이동하려는 칸이 주어진다. 0, 0에서 시작해서 -> 7, 0 도착 최소 몇 번만에 이동할 수 있는지 확인하는 문제다. => BFS를 이용해서 최솟값을 구하자 처음 나이트가 이동할 수 있는 경우의 수, 가운데 시작에서 나이트는 저렇게 이동할 수 있음을 알고 시작하자. col, row / col2, row2를 따로 나누었다. 2차원 배열을 생성해서 예를 들어보자. 이런식으로 이동할 수 있음을 나타낸다. 두 번째, col2와 row2를 이용했을 때 이동할 수 있는 예를 들어보자. 이렇게 이동함을 알 수 있다. 그럼 이제 같이 이동했을 때를 나타내보자 겹칠 일이 없이, 내가 이동할 수 있는 좌표를 Queue에 담고 한..

초보병일이
'백준 오답노트' 카테고리의 글 목록