티스토리 뷰
728x90
풀이 및 소스코드
문제를 보면, 구해야 하는 것이 갈 수 있는 방의 최댓값과 그 최댓값이 나올 때 출발 방의 번호이다.
따라서 출발하는 방 번호를 인덱스로 하는 c 배열을 만들어서 들릴 수 있는 방의 갯수를 넣어주었다.
예를들면 1번에서 출발할 때 5개의 방을 들릴 수 있다면,
c[1] = 5 이렇게 넣어주었다.
이 문제에서는 방을 타고 타고 타고 가는 것이므로 dfs 를 사용했다.
import java.io.*;
import java.util.*;
public class Solution {
static int[] dx = {-1, 1, 0, 0};
static int[] dy = {0, 0, 1, -1};
static int cnt;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int[][] room;
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine());
for(int tc=1;tc<=t;tc++) {
int n = Integer.parseInt(br.readLine());
room = new int[n][n];
for(int i=0;i<n;i++) {
st = new StringTokenizer(br.readLine());
for(int j=0;j<n;j++) {
room[i][j] = Integer.parseInt(st.nextToken());
}
}
int[] c = new int[n*n+1];
int max = 0;
int start_room = n*n; //처음출발하는방. 방 번호의 최솟값을 넣어줘야하므로 큰값을 넣어주장
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
cnt = 1;
dfs(room, i, j, n, room[i][j]);
c[room[i][j]] = cnt;
if(cnt>=max) {
if (cnt>max) {
start_room = room[i][j];
max = cnt;
}
else {
if(start_room>room[i][j]) {
start_room = room[i][j];
}
}
}
}
}
sb.append("#"+tc).append(" ").append(start_room+" ").append(max).append("\n");
}
System.out.println(sb);
}
public static void dfs(int[][] r, int x, int y, int N, int now_n) {
for(int i=0;i<4;i++) {
int nowx = x+dx[i];
int nowy = y+dy[i];
if((0<=nowx&&nowx<N)&&(0<=nowy&&nowy<N)&&(r[nowx][nowy]==now_n+1)) {
cnt++;
dfs(r, nowx, nowy, N, now_n+1);
}
}
}
}
반응형
'Coding - Algo > Java' 카테고리의 다른 글
[SWEA] 햄버거 다이어트 (Java 자바) (0) | 2021.08.09 |
---|---|
[백준] 2210번:숫자판 점프 (Java 자바) (0) | 2021.08.06 |
[SWEA] 3499:퍼펙트 셔플 (Java 자바) (0) | 2021.08.06 |
[백준] 1158번:요세푸스 문제 (Java 자바) (0) | 2021.08.06 |
[백준] 10845번:큐 (Java 자바) (0) | 2021.08.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SSAFY
- 프로그래머스
- yoloV3
- 삼성청년SW아카데미
- swea 1240 자바
- 더 맵게
- 우분투
- 프로그래머스 더 맵게
- 백준 17144
- 백준 풀이
- 파이썬
- 1699 자바
- swea 1240
- 백준 dp 문제
- 타일링 자바
- swea 타일링
- 메뉴리뉴얼 풀이
- 파이썬 풀이
- swea 타일링 자바
- 1240 자바
- 백준파이썬
- 백준
- 3996 자바
- ubuntu
- 프로그래머스 파이썬
- 프로그래머스 자바
- union-find
- poker swea
- SWEA
- swea 4070 타일링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함