Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- BFS
- React Native
- springboot
- 폴더구조
- service 테스트
- 노마드코더
- FlatList
- 자료구조
- Navigation
- 이영직
- React Natvive
- 오블완
- 티스토리챌린지
- 비트마스킹
- web view
- bfs dfs
- 버튼 활성화
- 원복
- 완전탐색
- Project Bee
- react
- 상속 관계 매핑
- 해외 대외활동
- 창의충전소
- 휴대폰 기기
- ReactNative
- 백준 1992
- 경우의 수
- multipart upload
- 구현
Archives
- Today
- Total
유미의 기록들
[백준 3주차 - 1987] 알파벳 (Java) 본문
728x90
반응형
📌 문제
📝 풀이과정
완전탐색 문제이고 나는 DFS로 풀었다
1. map[0][0] 인 C를 int형 인덱스 2로 바꿔서 방문처리를 한다.
2. dfs(y, x, cnt) 탐색을 한다
2-1. cnt 중에 가장 큰 값 ret을 정의한다
2-2. 인접한 노드를 탐색하면서 방문하지 않은 알파벳이 있다면 방문처리를 하고 dfs(ny, nx, cnt+1) 탐색한다
2-3. 방문처리를 원복한다 (다른 루트로 탐색하기 위해 방문하지 않은 상태로 초기화한다)
💻 코드
import java.util.Scanner;
import java.io.*;
import java.util.*;
public class Main{
static int r,c,ret=0;
static char [][]map;
static int []visited=new int[30];
static int dy[]={-1,0,1,0};
static int dx[]={0,1,0,-1};
static void dfs(int y,int x,int cnt){
ret=Math.max(ret,cnt);
//System.out.println("("+y+","+x+"), "+map[y][x]+", cnt: "+cnt);
for(int i=0;i<4;i++){
int ny=y+dy[i];
int nx=x+dx[i];
if(ny<0 || ny>=r || nx<0 || nx>=c) continue;
int next=(int)map[ny][nx]-'A';
if(visited[next]==0){
visited[next]=1;
dfs(ny,nx,cnt+1);
visited[next]=0;
}
}
}
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
r=Integer.parseInt(st.nextToken());
c=Integer.parseInt(st.nextToken());
map=new char[r][c];
for(int i=0;i<r;i++){
String input=br.readLine();
for(int j=0;j<c;j++){
map[i][j]=input.charAt(j);
}
}
visited[(int)map[0][0]-'A']=1; //visited[2]=1
dfs(0,0,1); //dfs(y,x,cnt)
System.out.println(ret);
}
}
728x90
반응형
'코딩테스트 기록 > 알고리즘 문제' 카테고리의 다른 글
[백준 4주차 - 19942] 다이어트 (Java) (0) | 2024.04.17 |
---|---|
[백준 4주차 - 14890] 경사로 (Java) (0) | 2024.04.16 |
[백준 3주차 - 3197] 백조의 호수 (Java) (0) | 2024.04.13 |
[백준 3주차 - 17071] 숨바꼭질 5 (Java) (0) | 2024.04.12 |
[백준 3주차 - 13913] 숨바꼭질 4 (Java) (1) | 2024.04.11 |
Comments