Java(26)
-
[Spring Boot] Thymeleaf 경로 변경 & 다중 경로 설정
이 포스팅은 타임리프 템플릿 엔진 사용 시, html등의 파일을 프로젝트 '내부'가 아닌 '외부' (ex. C드라이브)에 두고 관리할 수 있는 방법을 다룬다. Thymeleaf 경로 변경 별도의 설정이 없다면, 기본 경로는 src/main/resources/templates 로 설정된다. 만약 기본 경로값을 바꾸고 싶다면, application.properties 파일에서 간단하게 변경 가능하다. spring.thymeleaf.prefix=classpath:/other-template/ 위와 같이 설정하게 되면, 경로는 src/main/resources/other-template 폴더 안에 들어간 html파일을 기본 경로로 읽을 것이다. Thymeleaf 다중 경로 설정 만약, 기존의 경로를 유지하면서 ..
2022.08.11 -
[Spring Boot] SMS 전송 - NAVER SMS API 연동
진행중인 프로젝트 내에 SMS 서비스를 구현할 일이 생겼다. 개인 공부용 무료 SMS 서비스를 찾다가 NAVER CLOUD PLATFORM에서 지원하는 SMS API 서비스를 알게 됐다. 대부분 coolsms를 많이들 이용했는데 개인적으로 네이버가 친숙한 플랫폼이기도 하고, 매월 50건의 무료메세지 발송 및 첫 가입 시 10만 크레딧을 제공한다고 하여 선택하게 됐다. 해당 크레딧은 네이버 클라우드 플랫폼에서 제공하는 다른 솔루션에도 사용할 수 있으니 유용하게 쓰시길 바란다. (단, 실제로 결제가 가능한 카드를 연동해야 한다.) 또한 네이버에서 API 문서를 잘 구성해놓은 것도 채택에 큰 비중을 차지했다. 따라서 필자는 네이버 클라우드 플랫폼에서 제공하는 NAVER API 가이드에 따라 차근차근 진행해볼 ..
2022.08.10 -
[프로그래머스] 방의 개수-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/49190 코딩테스트 연습 - 방의 개수 [6, 6, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 1, 6, 5, 5, 3, 6, 0] 3 programmers.co.kr 첫 5단계 문제풀이.. 특별한 알고리즘을 요하지 않지만, 방이 만들어지는 조건과 필요한 변수의 타입을 확실하게 지정해주지 않으면 시간초과나 메모리 초과 이슈가 생긴다. 문제 풀이 먼저, 화살표가 움직인 범위를 사각형(행렬) 기준으로 구해보자. arrows 배열을 쭉 돌며 움직인 방향을 변수에 담는다. 오른쪽 방향이 들어간 화살표(오른쪽 위, 오른쪽, 오른쪽 아래)는 width+1 왼쪽 방향이 들어간 화살표(왼쪽 위, 왼쪽, 왼..
2022.03.23 -
[프로그래머스] 순위-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 풀이 과정 필자는 이 문제를 보고 순서대로 로직을 정리해봤다. 1. 선수별 경기 결과를 인접행렬에 저장한다. 선수 1이 선수 2를 이긴 경우, graph[1][2] = 1, 선수 2가 선수 1에게 졌으니 graph[2][1] = 0이 들어간다. 2. 주어진 경기 결과로 구현한 인접행렬을 바탕으로 확정된 순위를 구한다. 선수가 N명일 때, 선수a가 지고, 이긴 경우를 합쳐 N-1인 경우 해당 선수의 순위를 확정지을 수 있다. ex) 선수 2의 경우, 이긴 경기..
2022.03.19 -
[JAVA] 플로이드-워셜 알고리즘
플로이드-워셜 알고리즘 그래프에서, 한 정점에서 다른 정점으로 가는 최단거리가 있다. 플로이드-워셜 알고리즘을 사용한다면 각각의 모든 정점에서 모든 정점으로 가는 최단거리를 전부 구할 수 있다. 즉, 1 ~ 2, 1 ~ 3, 1 ~ N 2 ~ N 3 ~ N 4 ~ N 5 ~ N 모든 경로에서 전부 최단 거리를 구할 수 있다. 2 -> 1로 가는 최단 경로를 볼 때, 2 -> 1은 9 2 -> 3 -> 1은 7로 노드 3을 거쳐가는 것이 더 빠름 이렇게 노드를 거쳐서 가는게 더 빠른 경로까지도 플루이드-워셜 알고리즘을 통해 구할 수 있다는 것이다. 플로이드-워셜 알고리즘은 DP(Dynamic Programming) 기법을 사용한 알고리즘이다. 즉, 노드 0개를 거쳐가는 최단거리를 구하고, 노드 1개, 노드..
2022.03.19 -
[프로그래머스] 가장 먼 노드-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 풀이 과정 문제에 주어진 그림을 보자 마자 바로 그래프 자료구조로 접근했다. https://born2bedeveloper.tistory.com/42 [JAVA] 그래프 구현하기 (인접 행렬, 인접 리스트) 그래프(Graph)란? 그래프는 vertex와 edge로 구성된 한정된 자료구조를 의미한다. vertex : 정점 edge : 정점과 정점을 연결하는 간선 아래는 대표적인 그래프 종류들의 예시다. 이러한 그래프는 인접 ..
2022.03.19