전체 글(101)
-
[BOJ] 19237. 어른 상어
https://www.acmicpc.net/problem/19237 접근 방법 청소년 상어가 자라서 어른상어가 되었다... 그래도 청소년 상어보다는 쉽게 느껴졌다. 그냥 구현을 쭉 해주면 되었다. 먼저 현재 있는 위치의 상어들이 냄새를 뿌린 코드이다. static void saveSmell(){ for(int i=0; i
2020.07.31 -
[BOJ] 1753. 최단경로
https://www.acmicpc.net/problem/1753 접근 방법 전형적인 다익스트라 알고리즘을 쓰는 문제이다. 가중치가 있는 Graph이기 때문! 주의할 점 그래프를 그릴 때 이중배열로 받게 되면 메모리 초과가 나기 때문에 이중리스트그래프로 받자 Need Know 다익스트라 알고리즘 전체 코드 ( Java ) import java.io.*; import java.util.*; class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringBuilder sb = new StringBuilder(); static int V; // Vertex static int E; ..
2020.07.29 -
[BOJ] 4485. 녹색 옷 입은 애가 젤다지?
https://www.acmicpc.net/problem/4485 접근 방법 (0,0) → (N-1,N-1)로 이동을 할 때 가장 적은 비용으로 가야함. 다익스트라 알고리즘 https://dev-room.tistory.com/18 Need Know 다익스트라 알고리즘 전체 코드 ( Java ) import javafx.scene.Node; import java.io.*; import java.nio.Buffer; import java.util.*; public class Main { static int N; static int M; static int[] dist; static ArrayList[] map; static PriorityQueue pq; public static void main(Strin..
2020.07.28 -
[Basic] Mock Object
Mock Object 란? Mock Object란 "가짜 객체" 라고 부르기도 한다. 객체 서로간의 의존성이 강해 구현하기 힘들 경우 가짜 객체를 만들어 사용하는 방법이다. Mock Object 쓰이는 경우 테스트 작성을 위한 환경 구축이 어려운 경우 테스트가 특정 경우나 순간에 의존적인 경우 테스트 시간이 오래 걸리는 경우 개인 PC의 성능이나 서버의 성능문제로 오래 걸릴수 있는 경우 시간을 단축하기 위해 사용한다. Mock 객체를 쓰지 않은 경우 의존 관계 : RestaurantService→ RestaurantRepository & MenuItemRepository @SpyBean(RestaurantService.class) private RestaurantService restaurantServi..
2020.07.23 -
[BOJ] 17144. 미세먼지 안녕!
https://www.acmicpc.net/problem/17144 접근 방법 문제에 나온 문항들에 대해서 그대로 구현해주면 된다. 미세먼지가 확산된다. 확산은 미세먼지가 있는 모든 칸에서 동시에 일어난다. (r, c)에 있는 미세먼지는 인접한 네 방향으로 확산된다. 인접한 방향에 공기청정기가 있거나, 칸이 없으면 그 방향으로는 확산이 일어나지 않는다. 확산되는 양은 A/5이고 소수점은 버린다. (r, c)에 남은 미세먼지의 양은 A - (A/5)×(확산된 방향의 개수) 이다. 공기청정기가 작동한다. 공기청정기에서는 바람이 나온다. 위쪽 공기청정기의 바람은 반시계방향으로 순환하고, 아래쪽 공기청정기의 바람은 시계방향으로 순환한다. 바람이 불면 미세먼지가 바람의 방향대로 모두 한 칸씩 이동한다. 공기청정기..
2020.07.21 -
[BOJ] 2186. 문자판
https://www.acmicpc.net/problem/2186 접근 방법 처음에 문제를 보고 BFS , DFS 로 설계하면 되겠다고 생각을 하였다. 하지만 BFS로 풀 경우 메모리초과와 시간초과가 나와서 DFS+DP 로 풀게 되었다. 먼저 DFS로 탐색을 하면서 그 때 마다 나올 수 있는 경우를 메모이제이션 해주었다. int dfs(int x, int y, int words) 에서 x와 y는 위치를 뜻하고 words는 찾아줘야할 단어의 인덱스로 지정해주었다. static int[][][] dp 는 각각의 위치에서 몇 번째 단어가 되었을 때 끝까지 갈 경우의 수를 저장해주었다. 만약 dp[1][1][2] = 3 이면 (1,1)에서 3번째 단어의 문자는 전체 단어를 만드는 경우의 수는 3개라 표현할 수 ..
2020.07.20