반응형

boj 45

[백준 Baekjoon] 10162번 전자레인지 - JAVA

문제풀이 최소버튼 동작을 구하기 위해서는 가장 가장 동작시간이 오래 걸리는 버튼을 최대로 누르면 됩니다. 가장 동작시간이 긴 A버튼 부터 남아있는 요리시간과 비교하여 버튼을 누를 수 있는 경우 해당 버튼을 누를 수 있는 최대를 구합니다. 시간을 정확히 맞출 수 없는 경우는 이 경우 버튼 C로 시간을 맞출 수 없는 경우입니다. 소스코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReade..

[백준 Baekjoon] 1268번 임시 반장 정하기 - JAVA

문제풀이 문제의 난이도는 브로즌 1이라지만, 체감은 더 난이도가 있었던것 같습니다. 풀기 엄청 귀찮은 문제였습니다. int[][] arr = new int[5][N]; Set[] dupCheckSet = new Set[N]; int max = 0, answer = 1; 표는 나중에 계산하기 편하게 i를 학년으로 j를 학생으로 생성하고 저장하였습니다. 중복되는 학생을 검사하기 위해 set 배열을 사용하였습니다. 한 번도 겹치지 않는 경우 1번 학생이 정답이여 초기값을 1로 하였습니다. for (int i = 0; i < 5; i++) { Map stuClsMap = new HashMap(); for (int j = 0; j < N; j++) { List value = stuClsMap.getOrDefaul..

[백준 Baekjoon] 2511번 카드놀이 - JAVA

문제풀이 간단한 구현문제입니다. A와 B의 카드를 문자열 배열로 저장합니다. 배열을 순회하며 A와 B의 카드를 비교합니다. 문자열의 기본 메소드 compareTo()를 사용하여, 문자열을 비교할 수 있습니다. 문자열을 비교하여 같은경우 0, 이외에는 A와 B 문자열의 차이를 리턴합니다. 마지막으로 이긴 사람을 저장합니다. 모든 라운드에서 비기는 경우는 초기화값인 'D'가 됩니다. A와 B의 최종 점수를 출력합니다. 이긴 사람을 출력합니다. 비기는 경우는 'D'를 출력합니다. 모든 라운드에서 비기는 경우인지 승자가 초기값인 'D'와 비교하여 검사합니다. 점수가 같은 경우 마지막으로 이긴 사람을 출력합니다. 점수가 다른 경우 더 높은 점수를 획득한 사람을 출력합니다. 소스코드 import java.io.Bu..

[백준 Baekjoon] 1713번 후보 추천하기 - JAVA

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int M = Integer.parseInt(br.readLine()); int[] fram..

[백준 Baekjoon] 1990번 소수인팰린드롬 - JAVA

[백준 Baekjoon] 1990번 소수인팰린드롬 - JAVA 문제 풀이 문제에서 주어진 a와 b의 범위가 최대 100,000,000 - 5로 매우 큽니다. 이렇게 큰 범위에서 소수인지 판별할 때는 에라토스테네스의 체를 사용하는 것이 효율적입니다. 다음과 같이 에라토스테네스의 체를 사용하여 소수인지 저장합니다. public static boolean[] isPrime = new boolean[100_000_001]; public static void eratosthenes() { isPrime[0] = isPrime[1] = true; for (int i = 2; i * i

[백준 Baekjoon] 15486번 퇴사 2 - JAVA

[백준 Baekjoon] 15486번 퇴사 2 - JAVA 문제 풀이 다이나믹 프로그래밍을 사용하여 시간복잡도를 O(n)으로 풀어야 하는 문제입니다. 문제에서 주어진 조건 N이 최대 1,500,000으로 시간복잡도가 O(n^2)만 되더라도 시간초과가 발생하게 됩니다. 다음과 같이 다이나믹 프로그래밍을 사용하여 문제를 해결 하였습니다. int[] dp = new int[N + 1]; int max = 0; for (int i = 0; i

[백준 Baekjoon] 11441번 합 구하기 - JAVA

[백준 Baekjoon] 11441번 합 구하기 - JAVA 문제 풀이 이 문제를 풀기 전에 누적 합이 먼지 알아야합니다. 문제에서 구간의 합을 출력하라 하였는데, 구간의합 = 누적 합이라고 생각하시면 됩니다. 누적 합은 이름에서 알 수 있듯이 일정 구간의 값들을 누적한 합입니다. 누적 합을 사용하는 이유는 구하고자하는 구간의 합을 매번 구하게 되면 O(n^2)의 시간복잡도를 갖기 때문에 이번 문제와 같이 최대 100,000 개의 수들을 100,000 구간의 합을 구하면 너무 큰 비용이 발생하게 됩니다. 누적합을 사용하면 구간의 합을 O(n)으로 구할 수 있습니다. 구간의 합을 구하기 앞서 누적합을 구해줍니다. int[] sum = new int[N + 1]; StringTokenizer st = new..

[백준 Baekjoon] 13459번 구슬 탈출 - JAVA

[백준 Baekjoon] 13459번 구슬 탈출 - JAVA import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { public static char[][] board; public static int[] dx = {-1, 1, 0, 0}; // 상 하 좌 우 public static int[] dy = {0, 0, - 1, 1}; public static void main(String[] args) thr..

[백준 Baekjoon] 17406번 배열 돌리기 4 - JAVA

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static int N, M, K, answer = Integer.MAX_VALUE; public static int[][] arr, calc; public static int[] order; // 연산 순서 public static boolean[] visit; public static int[] dx = {1, 0, -1, 0}; // 하, 우, 상, 좌 public static int[] dy = {0, 1, 0, -1}; pu..

반응형