본문 바로가기

알고리즘

(63)
[JAVA]백준_1260_DFS와BFS 문제 : www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제유형 : 그래프 탐색, DFS, BFS 풀이방식 : 그래프 탐색(인접행렬을 이용한 DFS와 BFS) 소스코드 package BOJ; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import ..
[JAVA]백준_13335_트럭 문제 : www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 문제 유형 : 구현 풀이방식 : 문제에 있는 내용을 while문과 배열로 구현, 배열돌리기 유의! 소스코드 package BOJ; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer;..
[JAVA]백준_10819_차이를최대로 문제 : www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 문제유형 : 브루트포스, 순열(next permutation) 풀이방식 1. 모든 경우의 배열의 순서를 만든다 (nextpermuation) 2. 넥퍼한 배열을 계산해서 최댓값 갱신 소스코드 package BOJ; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arra..
[JAVA]백준_10974_모든 순열 문제 : www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 유형 : 순열(넥퍼연습하려고 품) 풀이방식 : 넥퍼 소스코드 package BOJ; import java.util.Scanner; public class BOJ_10974_모든순열_Main { private static int N; private static int[] arr; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); arr = new int[N]; for ..
[JAVA]백준_10597_순열장난 문제 : www.acmicpc.net/problem/10597 10597번: 순열장난 kriii는 1부터 N까지의 수로 이루어진 순열을 파일로 저장해 놓았다. 모든 수는 10진수로 이루어져 있고, 모두 공백으로 분리되어 있다. 그런데 sujin이 그 파일의 모든 공백을 지워버렸다! kriii가 순 www.acmicpc.net 문제 유형 : 백트랙킹 풀이 방식 1. 1부터 N까지의 수로 이루어진 순열의 N : N을 구하기위해 등차수열 공식을 활용한다. -> 입력 문자열이 10자리 미만이면 모두 한자리수로 구성 -> 입력 문자열이 10자리 이상이면 두자리수도 포함 2. 백트랙킹 방식으로 문자열을 앞에서부터 한자리, 두자리씩 쪼개어 기저조건까지 수행 3. 조건에 맞으면 소스코드 package BOJ; impo..
[JAVA]백준_6087_레이저통신 문제 : www.acmicpc.net/problem/6087 6087번: 레이저 통신 크기가 1×1인 정사각형으로 나누어진 W×H 크기의 지도가 있다. 지도의 각 칸은 빈 칸이거나 벽이며, 두 칸은 'C'로 표시되어 있는 칸이다. 'C'로 표시되어 있는 두 칸을 레이저로 통신하기 위해서 www.acmicpc.net 문제 유형 : BFS + DP, 다익스트라(우선순위큐) 풀이 방식 Step 1. 시작점과 끝점을 파악한 후 visited[][] int형 2차원 배열값을 최대치로 초기화한다. Step 2. 우선순위 큐를 이용하여 다익스트라 알고리즘 Step 3. 방향이 같을때 visited[nr][nc]와 현재 거울 개수를 비교 방향이 다를때 visited[nr][nc]와 현재 거울 개수 +1 를 비교 소스코..
[JAVA] 이진탐색(Binary Search) 이진탐색 정렬된 리스트에서 원소를 반으로 분할(분류)하여 특정 값을 찾는 알고리즘 1. 중간 값(mid)이 찾고자 하는 값(value)보다 작을 경우 => 시작 값(start)이 중간 기준이 되고 다시 중간 값을 도출 2. 중간 값(mid)이 찾고자 하는 값(value)보다 클 경우 => 끝 값(end)이 중간 기준이 되고 중간 값을 다시 도출 3. 시작 값이 끝 값보다 클경우 반복문 종료 (start>end) 소스코드(반복문) package 개념; public class BinarySearch1 { // 이진탐색 - 반복문 public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5, 6 }; // ex) 3을 찾을때 int value = ..
[JAVA]백준_19637_IF문좀대신써줘 문제 : www.acmicpc.net/problem/19637 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net 문제 유형 : 이진탐색 풀이 방식 Step 1. 칭호의 이름과 해당 칭호의 전투력 상한값을 list에 넣는다 Step 2. 캐릭터의 전투력을 입력 받고 이진탐색을 한다. Step 3. 이진탐색한 내용들을 StringBuilder에 append 하여 출력 소스 코드 package BOJ; import java.io.BufferedReader; import jav..