일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스레드 #동시성 #thread #process #
- 개발서
- 개발자취미
- #알고리즘 #백준 #15684 #백준15684 #algorithm #baekjoon #baekjoon15684 #C++
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #괄호변환 #programmers #C++
- #알고리즘 #백준 #1793 #백준1793 #algorithm #baekjoon #baekjoon1793 #C++
- #알고리즘 #백준 #17136 #백준17136 #algorithm #baekjoon #baekjoon17136 #C++
- #알고리즘 #백준 #1260 #백준1260 #algorithm #baekjoon #baekjoon1260 #Java
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #외벽점검 #programmers #C++
- #알고리즘 #백준 #1987 #백준1987 #algorithm #baekjoon #baekjoon1987 #Java
- #알고리즘 #백준 #17837 #백준17837 #algorithm #baekjoon #baekjoon17837 #C++
- #알고리즘 #백준 #17406 #백준17406 #algorithm #baekjoon #baekjoon17406 #C++
- #알고리즘 #백준 #14888 #백준14888 #algorithm #baekjoon #baekjoon14888 #C++
- #알고리즘 #백준 #15683 #백준15683 #algorithm #baekjoon #baekjoon15683 #C++
- #알고리즘 #백준 #3190 #백준3190 #algorithm #baekjoon #baekjoon3190 #C++
- 책리뷰
- #알고리즘 #백준 #4386 #백준4386 #algorithm #baekjoon #baekjoon4386 #C++
- #알고리즘 #백준 #1525 #백준1525 #algorithm #baekjoon #baekjoon1525 #C++
- #알고리즘 #백준 #2616 #백준2616 #algorithm #baekjoon #baekjoon2616 #Java
- CleanCode
- #알고리즘 #백준 #2573 #백준2573 #algorithm #baekjoon #baekjoon2573 #C++
- #알고리즘 #백준 #2352 #백준2352 #algorithm #baekjoon #baekjoon2352 #C++
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #블록이동하기 #programmers #C++
- #알고리즘 #백준 #5214 #백준5214 #algorithm #baekjoon #baekjoon5214 #C++
- #알고리즘 #백준 #17472 #백준17472 #algorithm #baekjoon #baekjoon17472 #C++
- #알고리즘 #백준 #17140 #백준17140 #algorithm #baekjoon #baekjoon17140 #C++
- #알고리즘 #백준 #2580 #백준2580 #algorithm #baekjoon #baekjoon2580 #Java
- #알고리즘 #백준 #12094 #백준12094 #algorithm #baekjoon #baekjoon12094 #C++
- 클린코드
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #문자열압축 #programmers #C++
Archives
- Today
- Total
개발자 일기장.
백준 1987. 알파벳 본문
1987 알파벳
문제해결 사진
문제 알고리즘
- dfs
풀이방법
- dfs를 돌린다.
생각할 것
동일한 알파벳 체크를 할 것이므로
visited[][]
를 구현하지 않아도 된다.꼭
board[R-1][C-1]
가 끝이 아닐 수 있다. 요거를 생각을 못해서 정답률이 박살이 났다.
핵심 코드
import java.util.*;
import java.io.*;
public class Main {
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// private static final BufferedWriter bw = new BufferedWriter(new
// OutputStreamWriter(System.out));
private static int dx[] = { -1, 0, 1, 0 };
private static int dy[] = { 0, -1, 0, 1 };
static int R, C;
static int[][] board;
static boolean[] alphabet;
static int MaxValue = 0;
public static void main(String[] args) throws IOException {
init();
solution();
System.out.println(MaxValue);
}
public static void init() throws IOException {
// init & input
StringTokenizer st = new StringTokenizer(br.readLine());
R = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
board = new int[R][];
alphabet = new boolean[26];
for (int i = 0; i < 26; i++)
alphabet[i] = false;
for (int i = 0; i < R; i++) {
board[i] = new int[C];
}
for (int i = 0; i < R; i++) {
String line = br.readLine();
for (int j = 0; j < C; j++) {
board[i][j] = line.charAt(j);
}
}
}
public static void solution() {
dfs(0, 0, 0);
}
public static void dfs(int r, int c, int depth) {
// end state, if duplicate alphabet
if (alphabet[(board[r][c] - 'A')]) {
if (MaxValue < depth)
MaxValue = depth;
return;
}
// loop
for (int dir = 0; dir < 4; dir++) {
int nextR = r + dy[dir];
int nextC = c + dx[dir];
// if out of board, update MaxValue
if (isInBoard(nextR, nextC) == false) {
if (MaxValue < depth + 1)
MaxValue = depth + 1;
continue;
}
alphabet[(board[r][c] - 'A')] = true;
dfs(nextR, nextC, depth + 1);
alphabet[(board[r][c] - 'A')] = false;
}
}
static boolean isInBoard(int r, int c) {
if (r < 0 || r >= R)
return false;
if (c < 0 || c >= C)
return false;
return true;
}
}
문제 후 느낀점
- 문제를 잘못 파악해서 정답률이 박살이 나버렸다.
'취업 > Algorithm.' 카테고리의 다른 글
백준 2580. 스도쿠 (0) | 2020.05.30 |
---|---|
백준 2532. 반도체 설계 (0) | 2020.05.30 |
백준 1793. 타일링 (0) | 2020.05.30 |
백준 1260. DFS, BFS (0) | 2020.05.30 |
[2020 KAKAO BLIND RECRUITMENT] 외벽 점검 (0) | 2020.05.02 |