반응형

자바 119

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

[백준 Baekjoon] 20056번 마법사 상어와 파이어볼 - JAVA

[백준 Baekjoon] 20056번 마법사 상어와 파이어볼 - JAVA 문제 풀이 List list : 파이어볼을 저장할 리스트입니다. Queue[][] grid : 이동이 끝난 파이어볼이 저장될 큐 2차원 배열입니다. M번 파이어볼의 정보를 입력받아 리스트에 추가합니다. 파이어볼은 위치 (r, c), 질량 m, 방향 d, 속력 s 순서이지만, 입력은 위치 (r, c), 질량 m, 속력 s, 방향 d 로 속력과 방향이 반대입니다. 1. 모든 파이어볼이 자신의 방향 di로 속력 si칸 만큼 이동한다. 리스트에 존재하는 모든 파이어볼의 x, y값을 변경해줍니다. // 모든 파이어볼이 자신의 방향 di로 속력 si칸 만큼 이동한다. f.r = (N + f.r + dx[f.d] * (f.s % N)) % N;..

자바(JAVA) - 입출력 스트림

자바(JAVA) - 입출력 스트림 입출력 스트림이란? 스트림(Stream)을 한글로 번역하면 개울, 시내, 줄기, 줄줄 흐르다로 번역됩니다. 입출력 스트림에서 스트림은 순서가 있는 데이터의 연속적인 흐름이라 할 수 있습니다. 입출력 스트림은 입출력 장치와 자바 응용 프로그램을 연결하는 역할입니다. 기본 단위는 바이트 이며, 단방향 스트림과 선입선출의 구조를 가집니다. 입력 스트림 : 입력 장치(키보드 등)으로 부터 받은 입력 값을 자바 응용 프로그램으로 전달하는 객체입니다. 자바 응용 프로그램은 입력 장치로부터 직접 데이터를 읽지 않고 입력 스트림을 통해 데이터를 읽습니다. 출력 스트림 : 자바 응용프로그램으로 부터 출력 장치(화면 등)으로 데이터를 보내는 객체입니다. 입력 스트림과 마찬가지로 직접 데이..

반응형