반응형

Java 125

선택 정렬 (SelectionSort) - 자바(JAVA)

c++로 작성되어 있는 수도코드를 자바로 변환한 코드입니다. // 정렬되지 않은 정수들 중에서 가장 작은 값을 찾아서 정렬된 리스트 다음 자리에 놓는다. // void SelectionSort(int *a, const int n) void selectionSort(int[] a, final int n) { // n개의 정수 a[0]부터 a[n-1]까지 비감소 순으로 정렬한다. for (int i = 0; i < n; i++) { int j = i; // a[i]와 a[n-1] 사이에 가장 작은 정수를 찾는다. for (int k = i + 1; k < n; k++) if (a[k] < a[j]) j = k; // a[i] 에서부터 a[n-1]까지의 정수 값을 검사한 결과 a[j]가 가장 작은 값 // a..

[백준 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..

자바(JAVA) - FileReader, FileWriter 파일 읽기, 쓰기

자바(JAVA) - FileReader, FileWriter 파일 읽기, 쓰기 자바에서 텍스트 파일을 읽고 쓰기 위한 FileReader와 FileWriter 클래스가 있습니다. FileReader와 FileWriter 클래스는 문자 스트림으로 텍스트 파일을 읽고 쓰는데 사용됩니다. 자바의 입출력 스트림은 문자 스트림과, 바이너리 스트림 두 종류가 존재합니다. 문자 스트림은 문자만 입출력하는 스트림으로 문자가 아닌 다를 데이터는 스트림에서 처리하지 못함니다. 만약 동영상, 오디오 등의 바이너리 데이터를 읽고 쓴다면 바이너리 스트림을 사용하여야 합니다. FileReader FileReader는 파일 입력 스트림을 생성하고 파일을 열어 스트림과 연결합니다. FileReader 객체가 생성될 때에 파일과 직접..

[백준 Baekjoon] 17143번 낚시왕 - JAVA

[백준 Baekjoon] 17143번 낚시왕 - JAVA 문제 풀이 Shark[][] grid : 상어가 격자에 두 마리 존재하는지와 땅에서 가장 가까운 상어를 찾는 데 사용합니다. List list : 격자에 존재하는 상어를 관리하는 데 사용합니다. 낚시왕이 오른쪽으로 한 칸 이동하며 상어를 잡는 행동과, 상어 이동을 호출합니다. // 낚시왕이 오른쪽으로 한 칸 이동 for (int i = 0; i < C; i++) { fishing(i); move(); } 낚시왕이 있는 열에 있는 상어 중에서 땅과 제일 가까운 상어를 잡습니다. 잡은 상어는 격자와 리스트에서 모두 제거해줍니다. for (int r = 0; r < R; r++) { // 까가장 가까운 상어를 잡는다. if (grid[r][c] != n..

반응형