일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 2018 KAKAO BLIND RECRUITMENT 1차
- 2019 카카오 공채
- gcp
- set
- 2018 카카오
- 백준
- 비트마스크
- 2019 KAKAO BLIND RECRUITMENT
- 젠킨스
- 카카오 공채
- 프로그래머스
- Baekjoon
- gradle
- map
- 2020 카카오 공채
- bfs
- 삼성 SW 기출문제
- 2020 KAKAO BLIND RECRUITMENT
- CS 스터디
- 2018 카카오 공채
- Java
- 삼성 SW 역량테스트
- dfs
- c++
- 자바
- 부스트코스
- 카카오
- 알고리즘
- 2018 KAKAO BLIND RECRUITMENT
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
Archives
- Today
- Total
아무코딩
[백준 1987] 알파벳 본문
문제풀이
dfs를 사용하며 최대한 갈수 있는 칸수를 계속 비교하여 업데이트 해준다.
소스코드
더보기
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Baekjoon1987 {
static final int COUNT_OF_ALPHABET = 26;
static int rowSize;
static int colSize;
static char[][] map;
static boolean[] visited;
static int[] dirRow={1,0,-1,0};
static int[] dirCol={0,-1,0,1};
static int maxDistance=0;
public static void input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
rowSize = Integer.parseInt(st.nextToken());
colSize = Integer.parseInt(st.nextToken());
map = new char[rowSize+1][colSize+1];
visited = new boolean[COUNT_OF_ALPHABET];
for(int i=1;i<=rowSize;i++){
String str = br.readLine();
for(int j=1;j<=colSize;j++){
map[i][j] = str.charAt(j-1);
}
}
}
public static void dfs(int row, int col, int cnt){
visited[map[row][col]-'A'] = true;
for(int i=0;i<4;i++){
int nextRow = row + dirRow[i];
int nextCol = col + dirCol[i];
if(isRange(nextRow, nextCol)){
if(!visited[map[nextRow][nextCol]-'A'])
dfs(nextRow,nextCol,cnt+1);
}
}
visited[map[row][col]-'A'] = false;
maxDistance = Math.max(maxDistance,cnt);
}
public static boolean isRange(int nextRow, int nextCol) {
return nextRow>0 && nextCol>0 && nextRow<=rowSize && nextCol<=colSize;
}
public static void main(String[] args) throws IOException {
input();
dfs(1,1,1);
System.out.println(maxDistance);
}
}
|
cs |
문제 링크 : www.acmicpc.net/problem/1987
'알고리즘 > 백준' 카테고리의 다른 글
[백준 11967] 불켜기(c++) (0) | 2020.05.30 |
---|---|
[백준 2616] 소형기관차 (java) (0) | 2020.05.29 |
[백준 17471] 게리멘더링 (java,c++) (0) | 2020.05.28 |
[백준 2166] 다각형의 면적 (c++) (0) | 2020.05.22 |
[백준 1717] 집합의 표현 (c++) (0) | 2020.05.21 |
Comments