Algorithm (PS)/백준18 [백준] 10816. 숫자 카드2 (Java) [lower_bound, upper_bound] 문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0 www.acmicpc.net 알고리즘 이분탐색(lower_bound, upper_bound) 풀이 이분탐색 개념의 lower_bound와 upper_bound의 개념을 알고 있는지를 확인하는 문제였다. 정렬을 시켜주고 타겟 숫자보다 큰 숫자가 나타나는 인덱스를 구하고(upper_bound) 타겟 숫자가 처음으로 진입하는 나타나는 인덱스를 구한다.(lower_bound) 그리고 uppe.. 2023. 7. 8. [백준] 2805. 수들의합 (Java) [이분탐색] 문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 알고리즘 이분탐색 코드 package com.company; import java.io.*; import java.util.ArrayList; import java.util.StringTokenizer; public class Test_BinarySearch2 { static int N, M; static int MAX = 1000000000; stat.. 2023. 7. 8. [백준] 1789. 수들의합 (Java) [이분탐색] 문제 https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 알고리즘 이분탐색 + 수학 풀이 N까지의 합의 공식과 이분탐색을 이용해서 풀이를 했다. left+ right/2, 즉, 중간 값을 구해서 S를 찾아가는 과정이며 자세한 건 풀이를 보자. 코드 package com.company; import java.io.*; public class Test_BinarySearch { static long MAX = 4294967295L; static long ans = 0; public static void main(String args[]) throws IOExceptio.. 2023. 7. 8. [백준] 2346. 풍선 터트리기 (Java) [Deque] 문제 https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 사용한 알고리즘 덱(Deque) 풀이 풍선이 양수, 음수일 때를 조건문으로 정해주고 Deque를 통해 방향 이동을 해주면 되는 문제였다. 종이가 양수 일 경우 앞 풍선을 뒤쪽으로 보내고, 종이가 음수 일 경우 뒤 풍선을 앞으로 보내주었다. 코드를 통해 확인해보자. 코드 package com.company; import java.io.*; import java.util.Arr.. 2023. 7. 6. [백준] 10799. 쇠 막대기 (Java) [Stack] 문제 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 사용한 알고리즘 Stack 풀이 괄호에서 레이저를 파악하는 것이 핵심인 문제였다. Stack을 통해 '('을 삽입을 하면서 '()'이 있는 경우는 레이저로 판단하여, 조건 문으로 분기를하여 풀이를 하였다. 자세한 것은 풀이를 확인해보자. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReade.. 2023. 7. 6. [백준] 1966. 프린터 큐 (Java) [Queue + PrioirtyQueue] 문제 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 사용한 알고리즘 큐(Queue) + 우선순위 큐(PriorityQueue) 풀이 큐(Queue)에 중요도(int)와 궁금한 문서인지 flag(boolean)을 저장하고, 우선순위큐(PriorityQueue)에 가장 높은 중요도를 저장하였다. 그런다음 큐에서 하나씩 아이템을 빼서 우선순위 큐에서 뺀 가장 높은 중요도 비교하여 문제를 풀었다. 자세한건 코드를 확인해보자. 코드 import java... 2023. 7. 5. 이전 1 2 3 다음