Notice
Recent Posts
Recent Comments
Link
05-01 00:29
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 우리FISA
- 맥OS
- 클라우드 서비스 개발 #
- AWS
- Java
- Gradle
- springboot
- sts
- 우리에프아이에스 #
- mysql
- M2
- spring
- 우리FIS아카데미
- HTTP
- 로드밸런스
- K-디지털트레이닝
- 우리에프아이에스
- route 53
- 맥북
- 맥
- https
- 리눅스
- 우리FISA #
- 도메인
- dbeaver
- 글로벌소프트웨어캠퍼스
- 클라우드 서비스 개발
- 우리FIS아카데미 #
- jdk
Archives
- Today
- Total
<<개발일지>>
[인프런/DFS/섬나라 아일랜드] 본문
<<풀이>>
import java.util.Scanner;
class Main {
static int answer = 0, n;
static int[] dx = {-1, -1, 0, 1, 1, 1, 0, -1};
static int[] dy = {0, 1, 1, 1, 0, -1 ,-1, -1};
public void DFS(int x, int y, int[][] board) {
for (int i = 0; i < 8; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if(nx >= 0 && nx < n && ny >=0 && ny < n && board[nx][ny] == 1) {
board[nx][ny] = 0;
DFS(nx, ny, board);
}
}
}
public void solution(int[][] board) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(board[i][j] == 1) {
answer++;
board[i][j] = 0;
DFS(i, j, board);
}
}
}
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
n = in.nextInt();
int[][] arr = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = in.nextInt();
}
}
T.solution(arr);
System.out.println(answer);
}
}
이 문제는 DFS 문제 중에서도 쉬운 문제에 속한다.
이 문제의 핵심은 DFS이다.
외부에 참조해서 들어오는 예를 들어 board 같은 경우는 실제 board 값도 변경이 된다. (참조하는 거는 그대로이다. 변수만 여러개 생기는 것이다.)
나는 복사 본 배열 (모두 0으로 된)을 만들어서 1이 있으면 1로 변경을 시키고, 다음 과정에서 기존 배열은 1인데 복사본도 1이면 넘어가고 기존 배열은 1이고 복사본은 0이면 answer++ 해서 답을 구하는 구조를 생각했다.
하지만 강사님은 기존 배열 board 값을 0으로 변경을 시켜가며 answer++ 해줬다.
결과적으로는 강사님의 풀이 방식이 훨씬 리소스 등 여러부분에서 효율적이라고 볼 수 있다.
오늘도 좋은 걸 배웠다.
오랜만에 풀어보니 뇌가 오랜만에 자극이 온것 마냥 ㅋㅋ 개운 했다 ㅋㅋ 그래도 어떻게 할지 방향성 코드 짜는 형식은 기억이 잘 나는 것 같다
꾸준히 매주 1-2개씩 풀어나가면서 자료구조에 대한 이해도를 더욱 강화 시켜나가자
'코딩테스트' 카테고리의 다른 글
[인프런/Greedy/최대수입스케줄] (0) | 2024.10.27 |
---|---|
[인프런/LIS/가장 높은 탑 쌓기] (1) | 2024.09.08 |
[인프런/다이나믹(LIS)/최대 부분 증가수열] (0) | 2024.05.23 |
[인프런/BFS/12.토마토] (1) | 2024.05.19 |
[인프런/greedy/결혼식] (0) | 2024.04.17 |