Jun's Development Journey
[SWEA] 1219. [S/W 문제해결 기본] Stack1 - 길찾기 본문
문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
www.swexpertacademy.com
풀이
이 문제는 A(0)에서 B(99) 까지 도달할 수 있는지에 대한 여부를 판단하는 문제이다. 스택을 이용하는 단계이지만, 내부적으로 스택을 이용해서 함수를 처리하는 재귀를 이용해서 DFS 방식으로 풀었다.
문제에 나와있는 가이드 방법대로 할 수 있었지만 기존에 알고리즘 수업 때 배웠던 인접 리스트 방식을 이용해서 구현했다. 인접 리스트는 2차원 벡터를 이용해서 해당 정점에서 도달할 수 있는 정점들을 동적으로 추가할 수 있도록 구현했다.
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
|
public class Solution {
static Scanner scan = new Scanner(System.in);
static Vector<Vector<Integer>> vec;//각 정점의 인접리스트 만들기위한 2차벡터
static int[] datas;//그래프 자료 변수
static int chk = 0;//99 도착 여부 체크 변수
static void dfs(int vertex) {
if(vertex == 99) {//99에 도착한다면 체크 변수 1로 초기화
chk = 1;
return;
}
if(chk==0) {//이미 도착하는 경우 찾았다면 더이상 찾을 필요없으니 그 부분 처리
}
}
static void make_graph(int num) {
vec = new Vector<Vector<Integer>>(num);
for(int j=0;j<num;j++)
vec.add(new Vector<Integer>());
for(int j=0;j<num*2;j+=2) {
}
}
static void solution() {
for(int i=1;i<=10;i++) {
scan.nextInt();
int num = scan.nextInt();
datas = new int[num*2];
//데이터 입력
for(int j=0;j<num*2;j++)
datas[j] = scan.nextInt();
//그래프 생성
make_graph(num);
//탐색
dfs(0);
System.out.println("#"+i+" "+chk);
chk = 0;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
solution();
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'SWEA > Intermediate' 카테고리의 다른 글
[SWEA] 1223. [S/W 문제해결 기본] Stack2 - 계산기2 (0) | 2019.08.05 |
---|---|
[SWEA] 1222. [S/W 문제해결 기본] Stack2 - 계산기1 (0) | 2019.08.05 |
[SWEA] 1218. [S/W 문제해결 기본] Stack1 - 괄호 짝짓기 (0) | 2019.08.04 |
[SWEA] 1217. [S/W 문제해결 기본] Stack1 - 거듭 제곱 (0) | 2019.08.04 |
[SWEA] 1216. [S/W 문제해결 기본] String - 회문2 (0) | 2019.08.02 |