본문 바로가기

전체 글

(401)
백준(BOJ) 1092: 배 https://www.acmicpc.net/problem/1092 문제가 깔끔하지 않을수 있다. 여기서 깔끔하지 않다는 것은 어떠한 명확한 알고리즘을 묻는것도 아니고, 그 알고리즘을 감추어 놓은 것도 아니고, 알고리즘과 관련된 어떠한 참신한 생각을 떠올려야 풀리는 문제도 아닌 문제를 말한다. 하지만 이런 더러운 문제도 가치가 있다. 왜? 이러이러한 문제가 내가 알고있는 어떠한 해결법으로는 깔끔하게 풀리지 않는다는 것을 알려준다는 점에서 그러하다. 나는 이문제가 "최소 회의실 개수" 문제와 같이 우선순위 큐를 이용하여 풀릴줄 알았다. 그래서 그렇게 접근해 보았지만 예제 테스트를 모두 통과했지만 결국 오답이 나왔다. 코드는 상당히 지저분했다. 즉, 최소 회의실 문제는 PriorityQueue에 넣는 것도 회..
백준(BOJ) 1238: 파티 https://www.acmicpc.net/problem/1238 출처: https://steady-coding.tistory.com/106 다익스트라(Dijkstra)는 한정점에서 그 정점을 제외한 다른 모든 정점까지의 최단거리를 구할때 쓰이는 알고리즘이다. 그렇다면 다른 모든 정점에서 그 하나의 정점까지의 각각의 최단거리는 어떻게 구할까? 입력을 반대로 받아서 다익스트라 알고리즘을 적용하면 된다. 이 문제에서 배운것: 여러개의 정점에서 한정점으로 가는 각각의 최단거리는 출발점과 도착점에 대해 받은 정보를 반대로 적용하여 다익스트라 알고리즘을 적용하면 쉽게 구할 수 있다. import java.io.BufferedReader; import java.io.InputStreamReader; import j..
백준(BOJ) 1753: 최단경로 https://www.acmicpc.net/problem/1753 처음에 인접리스트로 풀었다. 통과가 되었다. 하지만 방향그래프인만큼 인접행렬로 풀려고 시도를 하였다 => 메모리 초과가 났고 아래 글을 발견했다. 관련내용은 "3."번이다. https://www.acmicpc.net/board/view/34516 따라서, 방향그래프라고 해서 반드시 인접행렬을 사용해야만 하는 것은아니다. 아래는 인접행렬로 구현한 메모리초과가 나는 풀이다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Testing3 { static class Point { int vertex; int weight..
백준(BOJ) 11657: 타임머신 /* 출력 초과를 논리적으로 계산하는 습관. 처음에는 출력초과가 나왔다. 이후 dist배열의 int를 long으로 바꾸니 통과되었다. 이 문제에서 출력 초과가 발생하는 이유는 -1을 출력해야 하는 상황에서 각 도시로 가는 최단 거리들을 출력하기 때문입니다. 질문하신 내용처럼 기존 dist에 들어있는 INF가 초과되어 overflow가 발생하지는 않으나, 이 문제는 가중치가 음수인 것이 허용되는 벨만-포드 알고리즘 문제입니다. 음수 사이클이 존재한다면 끝 없이 최소값이 갱신될 수 있고 이 때문에 출력초과가 발생하는 것입니다. 왜 이 때문에 출력초과가 발생하느냐? 가 궁금하실텐데 결론부터 말하자면 underflow때문입니다. 문제에서 주어진 조건인 정점의 개수가 500개, 간선의 개수가 6000개, 최소 가..
웹 프로그래밍 큰그림 참고: https://shlee0882.tistory.com/107 Web이란? HTTP방식으로 데이터를 주고받는 것 HTTP에서 HT, Hyper Text란? link와 link로 문서간 연결된 것, 링크 기반으로 데이터에 접속하는 것. 브라우저: 클라이언트 쪽의 HTTP를 처리할 수 있는 소프트웨어(Firefox, Chrome... ) 웹서버: 서버쪽의 HTTP를 처리할 수 있는 소프트웨어(아파치, 톰켓, nginx, weblogic... ). 그림으로 나타내면 아래와 같이 서버안에 웹서버가 있는것임. 웹서버라는 소프트웨어가 없고 그냥 서버만 있다면 HTTP를 처리할 수 없습니다. 물론 웹서버는 HTTP를 처리하는 것 말고도 다양한 역할을 합니다. 정적 웹서비스 같은 경우 클라이언트로부터 reques..
빌드란? 출처: https://e2e2e2.tistory.com/29 https://nanbuja.com/entry/%EB%B9%8C%EB%93%9C-%EB%B0%B0%ED%8F%AC-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EC%9D%98-%EA%B0%9C%EB%85%90-%EC%B0%A8%EC%9D%B4%EC%A0%90-Build-Deploy-Complie 빌드란? 컴파일된 소스코드를 실행될 수 있는 소프트웨어 형태로 변환(실행할 수 있는 독립적인 구조로 변환)하는 과정, 혹은 그 결과 라이프 사이클이란 이미 정해져 있는 프로젝트 빌드 순서임. (실행될 수 있는 소프트웨어로 변환하는 과정, 결과가 빌드이고 서버에 배포하는 과정, 결과가 빌드이니 배포의 의미는 결국 서버에 반영하여 실행될 수 있는 소프..
빌드관리툴(Maven, Gradle...)이란? 출처: https://www.youtube.com/watch?v=3Jp9kGDb01g&t=187s 빌드툴의 가장 대표적인 기능은? 프로젝트에서 필요한 파일들을 자동으로 인식하게 해줌 필요한 라이브러리 가져와주고 build의 대상이 되는 프로젝트의 LifeCycle까지 관리해줌. Maven을 예전에는 많이 사용했지만(legacy project) 지금은 Gradle을 사용. 요즘의 빌드툴은 (라이브러리간의)의존관계를 관리해줌. 따라서 내가 프로젝트를 생성할때 특정 라이브러리가 받기로 했는데 에 가보면 무수히 많은 내가 선택하지도 않은 라이브러리가 함께 딸려오게 되는데 이것이 Gradle과 같은 빌드툴이 내가 선택한 라이브러리와 의존관계에 있는 라이브러리를 모두 가져오기 때문에 그런것임. 그래서 결국은 Spr..
라이브러리 의존성 추가 했는데도 import가 되지 않는 경우 (구체적인 예로 import javax.persistence.EntityManager;) 다른 라이브러리는 다 의존성이 추가되어 정상적으로 import되는데 유독 어느 하나의 라이브러리만 import 되지 않았다. 해결하려고 찾아보니 아래와 같은 말이 있었다. 그래서 를 아래와 같이 로 javax -> jakarta로 변경하니 해결되었다. 즉 특정 버전(Jakarta EE9)이 추가됨에따라 패키지 명이 변할 수 있으니 이점 참고 하여 import 문제시 생각해 보자!