Algorithm 11

[백준_24479/JAVA] 알고리즘 수업 - 깊이 우선 탐색 1

https://www.acmicpc.net/problem/24479문제풀이DFS는 재귀함수/스택 자료구조로 구현할 수 있다.1. DFS를 시작할 노드를 정한 후 사용할 자료구조 초기화 하기- 인접 리스트로 그래프 표현하기- 방문 배열 초기화 하기   - 시작 노드 스택에 삽입하기2. 스택에서 노드를 꺼낸 후 꺼낸 노드의 인접 노드를 다시 스택에 삽입하기3. 스택 자료구조에 값이 없을 때 까지 반복한다.코드public class Main { static ArrayList[] A; static boolean visited[]; static int[] visitedOrder; static int order=1; public static void main(String[] args) throws IOExce..

Algorithm/Baekjoon 2025.03.12

[백준_1764/JAVA] 듣보잡

https://www.acmicpc.net/problem/1764문제풀이듣도 못한 사람과 보도 못한 사람의 교집합을 찾아 사전순으로 출력하는 문제이다.나는 중복방지를 위해 HashSet 사용, 사전 순 정렬을 위해 ArrayList 사용했다.코드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..

Algorithm/Baekjoon 2025.03.06

[백준_2869/JAVA] 달팽이는 올라가고 싶다

https://www.acmicpc.net/problem/2869문제 풀이낮 동안 목적지에 도착했을 경우를 생각해서 B미터를 빼 주지 않아도 된다.코드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()); int ..

Algorithm/Baekjoon 2025.03.04

[백준_18870/JAVA] 좌표 압축

https://www.acmicpc.net/problem/18870 문제 풀이문제만 보고 어떤것을 요구하는지 파악하기가 힘들었다.이 문제는 그냥 원소를 크기 순서대로 정렬 후 순위를 매기는 것이라 보면 된다. 원본 배열 입력 받기 -> 원본 배열 정렬 -> HashMap으로 정렬된 배열에 우선 순위 ranking (정렬된 배열을 순회하면서 중복된 숫자는 무시하고 최초 등장하는 숫자에만 Rank를 부여해줌,Key에는 정렬된 배열 값, Value에는 Rank를 저장해야 원본 배열을 Key로 Hashmap에서 값을 찾아서 출력해줄 수 있기 때문)-> 원본 배열 순서 대로 rank 출력 코드public class Main { public static void main(String[] args) throw..

Algorithm/Baekjoon 2025.02.27

[백준_2346/JAVA] 풍선 터트리기

https://www.acmicpc.net/problem/2346 문제풀이이 문제는 데크의 구조를 이해하고 있어야한다.원형으로 풍선들이 배치되어있고,이미 터진 풍선을 제외한 남은 풍선들 사이에서 이동(회전)하는 과정을 구현하기에 데크가 적합하다. int[]로 [풍선 번호, 풍선 속의 번호 종이]의 형태로 저장된다.- poll(), pollLast()를 통해 오른쪽, 왼쪽으로 필요한 만큼 이동 시키고 그 위치에 있는 풍선을 터트린다.- 터뜨린 풍선의 종이 값을 다음 이동에 사용해 다음 풍선을 터트림 코드public class Main { public static void main(String[] args) throws IOException { BufferedReader br=new Buffe..

Algorithm/Baekjoon 2025.02.06

[백준_11286/JAVA] 절댓값 힙

https://www.acmicpc.net/problem/11286문제풀이데이터를 삽입할 때 마다 절댓값과 관련된 정렬이 필요하므로, 우선순위 큐로 문제를 해결할 수 있다.단, 이 문제는 절댓값 정렬이 필요해 우선순위 큐의 정렬 기준을 직접 정의 해야 한다.x=0 인 경우큐가 비어 있을 때는 0을 출력비어 있지 않을 때는 절댓값이 최소인 값을 출력.단, 절댓값이 같다면 음수를 우선하여 출력x=0이 아닌 경우add로 큐에 새로운 값을 추가하고, 우선순위 큐 정렬 기준으로 정렬한다.이 문제는 두 개 값을 비교해 어떤 값이 앞에 오고, 뒤에 오는지를 정하는 기준을 정의하는 Comparator로 풀이해야한다.절댓값이 작은 순으로 front에 가깝도록 우선순위 기준을 정의해야 한다.Comparator는 반환값 만..

Algorithm/Baekjoon 2025.01.07

[백준_2164/JAVA] 카드 게임_스택, 큐 풀이

https://www.acmicpc.net/problem/2164Queue 문제풀이이 문제는 큐를 잘 이해하고 있는지를 묻는 문제이다."카드를 맨 위에서 제거하고, 그 다음 카드를 맨 아래로 옮기는 작업을 반복해 마지막 남은 카드를 찾는 것"은 큐의 선입선출 (FIFO) 성질을 이용해 쉽게 구할 수 있다.(...그리고 알고리즘 분류에 '큐'라고 떡하니 써있다.)문제 풀이 순서 1. poll을 수행해서 front의 카드를 버린다.2. 한번 더 poll을 수행해서 그 카드를 가장 아래의 카드 위치로 이동한다 (rear의 위치)3. 큐의 크기가 1이 될 때 까지 과정 1~2를 반복해서 큐에 남은 원소를 출력한다. Queue 코드public class Main { public static void main..

Algorithm/Baekjoon 2025.01.05