Dev.baelanche
문제에서 요구하는대로만 하면된다;; public class Main { static int max = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int people = 0; for(int i=0; i b ? a : b; } }
30의 배수인지를 확인하려면 두가지를 검사하면 된다. 1. 수에 0이 적어도 1개 있어야 한다. 2. 각 자리수의 합이 3의 배수여야 한다. 위 두가지를 만족한다면 각 자리수를 내림차순으로 정렬하여 출력해주면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char c[] = sc.next().toCharArray(); Integer a[] = new Integer[c.length]; for(int i=0; i
문제에 알고리즘 힌트가 있다. 연구소 크기가 최대 8*8 이다. => 완전탐색 가능 인접한 위치로 바이러스가 퍼진다 => 그래프 이러한 이유로 완전탐색 + BFS 로 풀었다. 풀이는 다음과 같이 진행했다. 1. 연구소 배열에 벽을 세운다. 2. BFS 로 바이러스를 퍼트린다. 3. 빈 칸의 개수를 세어 최대값을 저장한다. 4. 반복한다. 백트래킹을 활용해본 적이 없어서 벽을 세우는 방법이 좀 까다로웠다. public class Main { static int n; static int m; static int a[][]; static int temp[][]; static int max = 0; public static void main(String[] args) { Scanner sc = new Scann..
배열의 최대길이가 20이므로 전 구간을 완전탐색한다. 처음에 좀 헤맸는데 재귀를 쓰라는 힌트를 보고 풀었다. 메모이제이션 기법만 안썼지 구현방법은 dp 와 다를게 없다. public class Main { static int n; static int s; static int a[]; static int cnt = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); s = sc.nextInt(); a = new int[n]; for(int i=0; i= n) return; sum += a[idx]; if(sum == s) cnt++; recursive(idx + 1, sum - a[..
퀵정렬로 정렬하여 k-1 의 인덱스를 출력했는데 96%에서 계속 시간초과가 났다. 질문게시판을 보니 퀵정렬 대신 퀵셀렉트를 써야된다고 한다. 퀵셀렉트는 퀵정렬 도중 원하는 인덱스를 바로 캐치하는 알고리즘인데, 공부할 것도 많은데 알아보기 귀찮았다. 그래서 합병정렬로 해봤는데 역시나 풀린다.... '잘' 구현할거 아니면 퀵정렬보다는 합병정렬 쓰는걸 추천한다. public class Main { static int temp[]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new Bu..
Comparator 구현해서 5분만에 풀었다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String a[] = new String[n]; for(int i=0; i
정렬을 오름차순 혹은 내림차순으로 해주고 큰 수 > 작은 수 > 큰 수 > 작은 수 순으로 배치하여 넓이를 구하면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a[] = new int[4]; for(int i=0; i