본문 바로가기

알고리즘/백준 문제풀이

(7)
백준 1654 - 랜선 자르기 (java/자바) 이분 탐색 문제 출처 : https://www.acmicpc.net/problem/1654 문제 풀이 :주어진 랜선의 총 개수 K, 만들어야 할 랜선 개수 N일 때이분 탐색을 이용해 각 랜선을 쪼개어서  총 N개를 만족하는 최대 랜선 길이를 구해야 한다.  이진 탐색의 범위는 low : 1 cmhigh : 랜선 배열 중 가장 긴 랜선 주의 사항은 랜선 배열의 각 랜선의 길이가 ' 2의31승-1보다 작거나 같은 자연수' 라고 했으므로 변수 타입을 long 타입으로 지정해주어야 하고, 최대 랜선 길이 값이 N개 이상으로 나뉘어질 수 있을 때에만 업데이트 될 수 있도록 해야 한다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputSt..
백준 2559 수열 (Java/자바) 슬라이딩 윈도우 문제출처 :https://www.acmicpc.net/problem/2559 문제풀이 : 2중 for문을 사용하여 구간별 합을 모두 구하고 max 합을 구하는 방식으로 구현하면최대 N*M의 시간이 소요되기 때문에 시간 초과가 될 수 있다. (이중 for문으로 구현했을시 코드)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Boj2559_NoSlidingWindow { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new In..
[백준] 1260 DFS와BFS (자바/java) 문제 - 문제 출처 : https://www.acmicpc.net/problem/1260 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄..
[백준] 1991 트리 순회(자바/java) 문제 - 문제 출처 : https://www.acmicpc.net/problem/1991 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 예를 들어 위와 같은 이진 트리가 입력되면, 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) 후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트) 가 된다. 입력 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와..
[백준] 2563 색종이 (자바/java) 문제 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오. 예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다. 입력 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래..
[백준] 8979 킹 (자바/java) 문제 - 문제 출처 : https://www.acmicpc.net/problem/8979 올림픽은 참가에 의의가 있기에 공식적으로는 국가간 순위를 정하지 않는다. 그러나, 많은 사람들이 자신의 국가가 얼마나 잘 하는지에 관심이 많기 때문에 비공식적으로는 국가간 순위를 정하고 있다. 두 나라가 각각 얻은 금, 은, 동메달 수가 주어지면, 보통 다음 규칙을 따라 어느 나라가 더 잘했는지 결정한다. 금메달 수가 더 많은 나라 금메달 수가 같으면, 은메달 수가 더 많은 나라 금, 은메달 수가 모두 같으면, 동메달 수가 더 많은 나라 각 국가는 1부터 N 사이의 정수로 표현된다. 한 국가의 등수는 (자신보다 더 잘한 나라 수) + 1로 정의된다. 만약 두 나라가 금, 은, 동메달 수가 모두 같다면 두 나라의 등수..
[백준] 1063 킹 (자바/java) 문제 - 문제 출처 : https://www.acmicpc.net/problem/1063 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 행을 상징한다. 열은 가장 왼쪽 열이 A이고, 가장 오른쪽 열이 H까지 이고, 행은 가장 아래가 1이고 가장 위가 8이다. 예를 들어, 왼쪽 아래 코너는 A1이고, 그 오른쪽 칸은 B1이다. 킹은 다음과 같이 움직일 수 있다. R : 한 칸 오른쪽으로 L : 한 칸 왼쪽으로 B : 한 칸 아래로 T : 한 칸 위로 RT : 오른쪽 위 대각선으로 LT : 왼쪽 위 대각선으로 RB : 오른쪽 아래 대각선으로 LB : 왼쪽 아래 대각..