목록전체 글 (144)
JAVA Developer Training
https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 풀었던 문제이다. 이번엔 다른 그래프 방식을 이용해서 풀어볼 생각 import java.io.*; //1743 public class training13 { public static int N, M, K, cnt; public static int[][] map; public static boolean[][] visited; public static int[..
https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net import java.io.*; import java.util.*; //2178 public class training12 { public static int N, M, cnt; public static int[][] map; public static int[] dx = { 0, 1, 0, -1 }; public static int[] dy = { 1, 0, -1, 0 }; public static int[] ans; publi..
https://www.acmicpc.net/problem/1303 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들의 옷색이 띄어쓰기 없이 주어진다. 모든 자리에는 www.acmicpc.net import java.io.*; import java.util.*; //1303 public class training11 { public static String[][] map; public static boolean[][] visited; public static int N, M, cnt; public static int[] result = { 0, 0 }; publi..
https://www.acmicpc.net/problem/8911 8911번: 거북이 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져 www.acmicpc.net import java.io.*; public class training10 { // 최대 최소 항상 값을 양수로 유지하기 위함 static int maxX, maxY, minX, minY, dir, x, y; static int dx[] = { 0, 1, 0, -1 }; static int dy[] = { 1, 0, -1, 0 }; public static void main(String[] args) thr..
https://www.acmicpc.net/problem/1141 1141번: 접두사 접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant, www.acmicpc.net 이 문제의 핵심은 글자 길이라 생각했다 문제에서 말하는 접두사는 반드시 타 문자들보다 길이가 짧고 동시에 해당문자가 포함이 되는지만을 판단하면 되었기 때문이다. 그래서 각 문자들을 입력받은후 선택정렬을 이용해 정렬시키고 Hashset을 이용하여 값을 도출해 냈다 *Hashset은 set에 값 추가시 자동으로 중복된 값은 제거 해주는 기능을..
Quick Sort은 분할 정복(divide and conquer) 방법 을 통해 주어진 배열을 정렬한다. * [분할 정복(divide and conquer) 방법] 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략이다. Quick Sort은 불안정 정렬에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. 또한 Merge Sort와 달리 Quick Sort는 배열을 비균등하게 분할한다. import java.util.*; public class training9 { public static int start; public static int[] array = {2, 1, 3, 5, 4}; public static void main(S..
손 안의 카드를 정렬하는 방법과 유사하다. Insertion Sort는 Selection Sort와 유사하지만, 좀 더 효율적인 정렬 알고리즘이다. Insertion Sort는 2번째 원소부터 시작하여 그 앞(왼쪽)의 원소들과 비교하여 삽입할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 자료를 삽입 하여 정렬하는 알고리즘이다. 최선의 경우 O(N)이라는 엄청나게 빠른 효율성을 가지고 있어, 다른 정렬 알고리즘의 일부로 사용될 만큼 좋은 정렬 알고리즘이다. import java.util.Arrays; public class training3 { public static void main(String[] args) { int[] array = {30, 9, 10, 13, 14, 4, 7, 20}; ..
Selection Sort는 Bubble Sort과 유사한 알고리즘으로, 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘이다. Selection Sort와 Insertion Sort를 헷갈려하는 사람들이 종종 있는데, Selection Sort는 배열에서 해당 자리를 선택하고 그 자리에 오는 값을 찾는 것이라고 생각하면 편하다. import java.util.Arrays; public class training2 { public static void main(String[] args) { int[] array = {30, 9, 10, 13, 14, 4, 7, 20}; int temp; int min; for(int i=0; i