총 10분 중 11분
2001
시즌 2개, 그리고 영화
시즌 2:
5화
“아일랜드”
출연: 이나영, 김민준, 김민정, 현빈
장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
회차
-
[Java][BOJ 17484] 진우의 달 여행(small)0619분문제 링크문제 파악지구와 달 사이 공간의 행렬 N x M (2≤ N, M ≤ 6)에서 달 여행에 필요한 최소 연료 값을 출력하라같은 방향으로 두 번 이동할 수 없다.접근 방법1. dfs에서 y가 7(높이)이되면 pq에 넣어 가장 적은 비용을 출력한다.2. dp는 dp[i][j] i 행 j 열이 = dp[i-1][j-1 or j or j+1] + dp[i][j] 1. 같은 방향인지 확인하기 위해 dir를 노드에 추가하고, 이전과 같은 dir면 멈추는 조건을 추가해야 한다.2. 재귀에서 탈출했을 때 visited false 처리재귀는 stack처럼 동작하기 때문에 달을 찍고 return하면 두번째 뒤 점에서 다시 달까지 시도코드 구현import java.util.*;public class Main { ..
-
[Java][BOJ 22860] 폴더 정리0612분문제 링크문제 파악main 폴더 하위에 있는 폴더의 총 개수 N, 파일의 총 개수 M상위 폴더 이름 P, 폴더 또는 파일의 이름 F, 폴더면 1 파일이면 0Q개의 쿼리는 main 부터 존재하는 경로에 대한 폴더인데, 폴더 하위에 있는 파일의 종류 개수와 파일의 총 개수를 출력하라4 1main FolderA 1FolderA FolderB 1FolderB FolderC 1FolderC FolderD 1FolderD File1 03mainmain/FolderAmain/FolderA/FolderB/FolderC/FolderD출력1 11 11 1 접근 방법각 폴더마다 파일 Set로 중복 처리하고, Parent - Folder(File) 리스트를 dfs 탐색하면서 파일 개수 카운트1. 부모 폴더에 따라 존재하는 파..
-
[BOJ 2178][JAVA] 공백없이 입력된 문자 하나씩 받아올때0416분문제 2178 문제링크 N×M크기의 배열로 표현되는 미로가 있다.101111101010101011111011미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.출력첫째 줄에 지나..
-
[BOJ 10552][JAVA] 박싱/언박싱0415분[Silver II] DOM - 10552문제 링크성능 요약 메모리: 178132 KB, 시간: 1000 ms분류 너비 우선 탐색, 깊이 우선 탐색, 그래프 이론, 그래프 탐색제출 일자 2025년 4월 15일 12:16:15문제 설명In a retirement home, N senior citizens are watching television. The television programme consists of M channels denoted with numbers from 1 to M. Each of the pensioners has their own favourite and hated TV channel.If the television is currently displaying the hated c..
Algorithm/Search
[Java][BOJ 17484] 진우의 달 여행(small)
728x90
반응형
문제 링크
문제 파악
지구와 달 사이 공간의 행렬 N x M (2≤ N, M ≤ 6)에서 달 여행에 필요한 최소 연료 값을 출력하라
- 같은 방향으로 두 번 이동할 수 없다.
접근 방법
1. dfs에서 y가 7(높이)이되면 pq에 넣어 가장 적은 비용을 출력한다.
2. dp는 dp[i][j] i 행 j 열이 = dp[i-1][j-1 or j or j+1] + dp[i][j]
1. 같은 방향인지 확인하기 위해 dir를 노드에 추가하고, 이전과 같은 dir면 멈추는 조건을 추가해야 한다.
2. 재귀에서 탈출했을 때 visited false 처리
- 재귀는 stack처럼 동작하기 때문에 달을 찍고 return하면 두번째 뒤 점에서 다시 달까지 시도
코드 구현
import java.util.*;
public class Main {
public static class Node {
int x;
int y;
int v;
int dir; // 0, 1, 2 (좌하, 하, 우하)
public Node(int x, int y, int v, int dir) {
this.x = x;
this.y = y;
this.v = v;
this.dir = dir;
}
}
public static boolean[][] v;
public static PriorityQueue<Integer> pq;
public static int[][] coord;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
coord = new int[n][m];
// 행렬 생성
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int a = sc.nextInt();
coord[i][j] = a;
}
}
// 달에 도달한 노드 저장소
pq = new PriorityQueue<>((a, b) -> a - b);
// 첫 번째 행 모든 열에서 출발점 생성 후 dfs
for (int i = 0; i < m; i++) {
int value = coord[0][i];
v = new boolean[n][m];
v[0][i] = true;
dfs(new Node(i, 0, value, 3)); // 첫 direction은 겹치지 않도록 [0, 2]가 아닌 값
}
System.out.println(pq.peek());
}
public static void dfs(Node cur) {
// 좌, 하, 우
int[] dx = {-1, 0, 1};
int[] dy = {1, 1, 1};
// 달에 닿으면 pq에 넣기
// 아래로만 이동하기 때문에 depth가 필요없음
if (cur.y == coord.length-1) {
pq.add(cur.v);
return;
}
for (int j = 0; j < 3; j++) {
int x = cur.x + dx[j];
int y = cur.y + dy[j];
if (x >= 0 && y >= 0 && y < coord.length && x < coord[0].length) {
if (v[y][x] || cur.dir == j) continue;
v[y][x] = true;
dfs(new Node(x, y, cur.v + coord[y][x], j));
v[y][x] = false;
}
}
}
}
배우게 된 점
1. 출발점에서 visited 초기화해주니까 재귀 탈출해서 v[y][x] = false 처리가 필요없는 줄 알았다.
2. x, y가 col, row라 헷갈려서 잘못썼다.
질문
dp코드도 봐야겠다 복잡해보임 ㅠ
[BOJ] 17484. 진우의 달 여행 (Small) - Java
17484.진우의 달 여행 (Small) : https://www.acmicpc.net/problem/17484 문제 설명 지구에서 달까지 가기 위해 최소한의 연료를 사용해야한다. 7시, 6시, 5시 총 3방향으로 이동할 수 있으며 직전에 움직인 방향
velog.io
728x90
'Algorithm > Search' 카테고리의 다른 글
[Java][BOJ 22860] 폴더 정리 (0) | 2025.06.12 |
---|---|
[BOJ 2178][JAVA] 공백없이 입력된 문자 하나씩 받아올때 (4) | 2025.04.16 |
[BOJ 10552][JAVA] 박싱/언박싱 (0) | 2025.04.15 |
2025:06:19
Algorithm/Search
[Java][BOJ 17484] 진우의 달 여행(small)