알고리즘

▶코드 import java.util.*; import java.io.*; public class Main{ static int[][] danji; static boolean[][] visited; static int[] dx = {0,0,-1,1}; static int[] dy = {-1,1,0,0}; static LinkedList result; static int cnt, N; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); result = new LinkedList(); N = Integer.parseInt(..
위 문제와 비슷한 문제 https://www.acmicpc.net/problem/2667 ▶코드 import java.util.*; import java.io.*; public class Main{ static int cabbage[][]; static boolean visited[][]; static int dx[] = {0,0,-1,1}; static int dy[] = {-1,1,0,0}; static int N, M, K; static LinkedList result; static int cnt; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStrea..
https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 위 문제는 최대한 진행할 수 있는 회의의 수를 출력하는 문제인데 회의 시간이 겹치지 않도록 해야한다. 예를 들어 1 4 5 7 이런 식으로 한 시간 차이로 진행할 수 있으며 1 4 4 4 4 5 이런 식으로 회의 시작 시간과 종료 시간이 같은 경우에도 가능하며 이 경우 출력은 3이 된다. ※위 문제 핵심 1. 종료시간을 기준으로 오름차순 정렬한다. 2. 종료시간이 같고 시작 시간이 다른 경우는 또 시작시간을 기준으로 오름차순 해야한다. ▶코드 import java.util.*; import java.io.*; p..
https://www.acmicpc.net/problem/1417 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net 다음 문제는 주어진 수들 중 최대값을 찾아 arr[0]의 값과 +1, -1 씩 교환하고 최대값이 arr[0] 으로 되기 전까지 다시 최대값을 찾아 이 계산을 반복한다. ▶코드 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { B..
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 위 문제는 정점의 개수 N 간선의 개수 M 탐색을 시작하는 정점의 번호 V 를 입력받고 그 다음 줄에는 연결된 정점을 입력으로 받는다. 4 5 1 1 2 1 3 1 4 2 4 3 4 위 예제를 그림으로 나타내면 다음 그림처럼 정점과 간선이 연결되어 있는 형태로 나타난다. ▶코드 import java.util.*; import java.io.*; public c..
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 위 문제는 1번 컴퓨터와 연결된 컴퓨터의 수를 찾는 문제로 DFS 로 문제 풀이를 하였다. 기존 DFS 함수에 count 변수를 추가하여 답을 추출하였다. ▶코드 import java.util.*; import java.io.*; public class Main { static int N, M; static int count=0; static int Edge_arr[][]; static boolean ..
https://www.acmicpc.net/problem/1105 1105번: 팔 첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 예제 800 899 - 출력 : 1 800 900 - 출력 : 0 80000 89999 - 출력 : 1 80000 8131231231 - 출력 : 0 L과 R의 자릿 수가 다르면 8이 안 들어가도 됨 ( 예 : 89 90 이면 8이 안 들어가도 됨 ) L과 R의 자릿 수가 같으면 연속되는 수만큼의 8이 들어가야함 ( 예: 8800 8809 이면 8이 두 개 들어가야함 ) L과 R의 자릿수가 다르면 8이 안 들어가도 되는 수가 ..
https://www.acmicpc.net/problem/11501 11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net 이 문제는 배열의 뒷부분부터 계산을 하면 된다. 예를 들어 1 1 3 1 2 이라는 예제가 있을 때 최댓값을 마지막 인덱스인 2로 두고 배열의 뒷 부분부터 2보다 큰 숫자가 나올 때까지 2에서 그 사이의 배열의 값을 빼준다. 즉 2 - 1 = 1 3 - 1 = 2 3 - 1 =2 해서 5 라는 값이 출력되는 것이다. 왼쪽 수는 최댓값을 의미하는 max 변수로 두고 코드를 작성하면 된다..
https://www.acmicpc.net/problem/2847 2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net 이 문제는 첫 번째 레벨부터 마지막 레벨까지 점수가 순차적으로 상승하도록 만들면 된다. 3 5 5 5 위 예제에서 5 5 5 는 3 4 5 가 되도록 하는데 이 때 첫 번째 5는 -2 , 두 번째 5는 -1 의 계산을 해야하므로 출력은 3이 된다. 어차피 마지막 레벨인 배열의 마지막 부분을 기준으로 한 단계씩 내리면서 점수를 차감해야 하기 때문에 기준이 되는 last 값은 arr[3] → arr..
공부 기록장
'알고리즘' 카테고리의 글 목록 (2 Page)