- Today
- Total
목록Category (318)
개발하는 고라니
11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 기본적인 플로이드-와샬 알고리즘 문제. 플로이드 와샬의 응용이 아니므로 간단하게 풀 수 있다. static void Floyd(int n){ for(int k=1; k
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oBrmo/btqYN2kGPPU/w70sy8qFu38PuKmYG9f9S0/img.png)
위와 같은 웹 페이지가 있을 때, 첨부 파일의 이름을 클릭하면 파일이 다운로드 되도록 하는 법을 알아본다. 우선 첨부파일의 정보를 출력하는 웹 페이지의 HTML일부를 보면 다음과 같다. [[${uploadDTO.fileName}]] "th:"와 같은 문자열이 있는데, 이는 thymeleaf라는 Template Engine을 사용하여 그렇다. 어쨋든 [[${uploadDTO.fileName}]] //------------------------------------------------------- 파일이름 '파일이름'을 클릭하면 '/download?fileName=파일이름'이라는 URL에 'GET'요청을 하게된다. 이 때 파일이 다운로드 되도록 하는 것이다. View 단은 이정도면 되었고, Back단을 살..
1613번: 역사 첫째 줄에 첫 줄에 사건의 개수 n(400 이하의 자연수)과 알고 있는 사건의 전후 관계의 개수 k(50,000 이하의 자연수)가 주어진다. 다음 k줄에는 전후 관계를 알고 있는 두 사건의 번호가 주어진다. www.acmicpc.net [플로이드-와샬 (Floyd-Warshall) 알고리즘] 이 문제를 풀기위해 플로이드 와샬 알고리즘을 공부했다. 이 문제를 DFS만으로 풀려고 하니까 TC에서 헤어나오질 못하였다. 사실 당연하다. 최대 정점의 수는 500개이나, 이후 최대 50,000개의 사건이 주어지므로, DFS 1번 당 최대 50,000 재귀를 한다고 할 때, 25,000,000번 호출되지 않을까? 하는 생각이 들었다. 역시 어떻게 풀어야할지 몰라 무식하게 접근한 꼴이다. 플로이드 와..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cVLYk5/btqYxoWDu1V/KIKTRYewrPtN9OLdDUDldk/img.png)
그래프가 주어졌을 때 하나의 시작 정점에서 다른 모든 정점들로 가는 최단 경로를 구하는 알고리즘은 다익스트라(Dijkstra)와 벨만-포드(Bellman-Ford)가 있다. 만약 그래프에 존재하는 모든 정점 사이의 최단 경로를 구하려면 다익스트라 알고리즘을 정점의 수(n) 만큼 반복 실행하면 된다. 즉 구해야할 최단 경로가 총 n^2개다. (자기 자신으로의 경로 포함) 하지만 이보다 간단한 방법으로 모든 정점 쌍 사이의 최단 경로를 구하는 방법인 플로이드-와샬(Floyd-Warshall) 알고리즘을 알아보고자 한다. 다익스트라 알고리즘은 가장 적은 비용을 하나씩 선택했다면, 플로이드 와샬 알고리즘은 기본적으로 거쳐가는 정점을 기준으로 알고리즘을 수행한다는 점에서 그 특징이 있다. 또한 이 알고리즘은 동적..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bONUv1/btqYtPUOHZb/fJRsGR9UKLA03fFgWuqIPk/img.png)
첨부파일을 다루다 보면, 파일의 종류, 확장자에 따라 다르게 처리해야할 경우가 있다. 이 때 업로드된 파일의 종류를 알아보려면 Content-Type이 무엇인지 알면 간단하게 판단할 수 있다. Content-Type 서버와 클라이언트가 어떤 자원(파일,문서,데이터 등)을 주고받을 때 웹 서버는 HTTP헤더로 파일이나 자원을 포함하는 바이트의 Stream을 앞에 보낸다. 이런 헤더는 클라이언트에게 웹 서버와 커뮤니케이션 세부사항을 묘사한다. 예를 들어, 헤더는 사용되고 있는 웹 서버의 '소프트웨어의 타입', '서버의 날짜와 시간', 'HTTP 프로토콜', '사용중인 커넥션 타입' 등을 지정한다. 헤더는 또한 클라이언트가 이런 가상 패스나 도메인에 대해 저장해야할 쿠키를 포함한다. Content-Type 개..
1. MultipartFile의 transferTo() 2. FileCopyUtils 이용 파일을 업로드하는 방법은 크게 2가지가 있다. 하나는 HTML의 form태그를 이용하는 것이고, 하나는 ajax를 이용하는 방법이 있다. 업로드한 파일을 로컬 저장소에 저장하는 방법을 알아보고자 한다. # 파일 업로드 Ajax를 이용해 Spring에서 지원하는 Multipart 타입으로 파일을 받는다. 1. C:\upload\temp : 파일 저장 경로 2. 저장될 파일 명 : UUID_filename.png (UUID는 파일의 고유 번호로, 파일명 중복 방지를 위해 적용한다.) # 1. Multipart의 transferTo(Path path) 이용하기 @PostMapping(value = "/upload") p..
라는 체크박스가 있다. 1) 체크박스가 체크되었는지 true/false로 가져오기 $("input:checkbox[name='box']").is(":checked") == true $("input:checkbox[name='box']").is(":checked") 2) 체크박스 해제하기 $("input:checkbox[name='box']").prop("checked", false); 3) 체크박스 선택하기 $("input:checkbox[name='box']").prop("checked", true); $("input:checkbox[name='box']").attr("checked", true); 4) 선택된 체크박스 수 가져오기 (다중 체크박스의 경우) $("input:checkbox[name='b..
6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net [BFS] 일반적인 2차원 배열에서 3차원 배열로 응용된 문제. 앞 뒤 좌 우 뿐만 아니라 상 하 까지 탐색 범위를 늘려주고 BFS를 실행하되, 탈출구를 찾았는지 못찾았는지에 대한 분기가 필요하다. # Code import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue;..