본문 바로가기

자바173

[스프링프레임워크] 파일 업로드 파일전송 파일 전송을 위해서는 form을 post 형식으로 해야하고 enctype을 multipart/form-data로 설정해야 한다. 이때 Controller에서는 해당 파라미터를 MultipartFile로 받아와야한다. enctype="multipart/form-data" 요청을 메소드 파라미터와 연관시킬 수 있다. 이때, 넘어오는 파라미터의 명과 메소드의 파라미터의 명이 같아야한다. public String doRegist(@ModelAttribute Book book, @RequestPart(required = false) MultipartFile file) 그리고 업로드된 파일을 저장하기 위해 rsLoader와 Resource를 사용하여 실제로 저장할 폴더의 경로를 구해와 파일을 전송받아 저장.. 2021. 5. 3.
[Java] SWEA 1953번 탈주범 검거 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 문제의 조건에 맞추어 파이프마다 갈 수 있는 경로를 이차원 배열인 dir에 저장하였습니다. 다음으로, 나가는 파이프의 출구와 들어가야 하는 파이프의 입구가 같을 때만 앞으로 전진하도록 BFS를 사용하여 해결했습니다. 이때, 소요된 시간 L 이상은 더 이상 검사할 필요가 없으므로 해당 Info는 BFS를 돌지 않게 해야 합니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import jav.. 2021. 5. 3.
[Java] BOJ 1699번 제곱수의 합 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 풀이 최대 항의 최대 개수는 1^2으로만 이루어진 경우이므로 memo[i] = i로 초기화하였습니다. i - (j ^ 2)인 수의 최대항의 개수 + 1중 최소인 값을 찾아 해결했습니다. 예를 들어 i = 5, j = 2라면 5 - (2 ^ 2) = 1이므로 memo[1]의 최대 항의 최소 개수는 1입니다. 때문에, 1 + (2 ^ 2)를 하면 원래 i인 5가 되므로 문제에서 요구한 제곱수의 합으로 표현되므로 memo[1] .. 2021. 4. 30.
[Java] BOJ 9251번 LCS 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 풀이 DP를 이용해서 해결했습니다. 코드 주석에 설명을 포함했습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static String S1, S2; public static int[][] memo; public static void main.. 2021. 4. 29.
[Java] Kruskal 알고리즘 MST를 찾는 알고리즘입니다. (설명을 잘 못해서 코드를 보시는 게 빠를 수 있습니다.... ㅠ) 1. 간선의 정보가 E개가 들어온다면 E개의 시작점, 도착점, 가중치를 저장할 수 있는 Edge 객체 배열을 만들고 저장하였습니다. 다음으로, 크루스칼 알고리즘은 그리디 알고리즘을 적용하고 있기 때문에 가중치를 기준으로 Edge 배열을 정렬하여 가장 낮은 가중치를 갖고 있는 간선의 정보를 우선적으로 처리하게 했습니다. 2. make() 함수를 이용해서 자기 자신이 부모가 되게 parents 배열을 초기화하는 작업을 하였습니다. 3. Edge 배열에 든 Edge들을 하나씩 처리하면서 union()을 처리하게 했습니다. union()은 최상위 부모 정점을 찾아주는 findSet을 통해 aRoot와 bRoot를 .. 2021. 4. 28.
[Java] KMP 알고리즘 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class KMP { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[] text = br.readLine().toCharArray(); char[] pattern = br.readLine().toCharArray(); int tLength = text.length; int pLength = pattern.length; int[] .. 2021. 4. 28.