inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

안녕하세요 질문입니다.

155

Solioquies

작성한 질문수 34

0

안녕하세요 예전부터 강의 잘 보고 있습니다. 다름이 아니라 제가 자바만 쓰는 곳에 코테를 준비하게 되서   자바로 문제푸는 중인데 

선생님께서 강의해주신 C++을 전부 제 나름대로 자바로 바꾸는 중입니다. 근데 저 벡터 부분을 자바로 바꾸는 부분에서 막혔는데 혹시 자바에서는 선생님 코드 어떻게 써야할지 혹시 알려주시면 감사하겠습니다.(전에 자바 질문도 받아주신다는 글 봐서 질문 드립니다..) 저 벡터 로 선언한 map 부분의 map[a].push_back[b]를 자바에서 쓰려니까 구글링 해도 잘 모르겠어서 질문 드립니다.

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<vector>
using namespace std;	
int ch[30], cnt=0, n, path[30];
vector<int> map[30];
void DFS(int v, int L){
	int i, j;
	if(v==n){
		cnt++;
		for(j=0; j<L; j++){
			printf("%d ", path[j]);
		}
		puts("");
	}
	else{
		for(i=0; i<map[v].size(); i++){
			if(ch[map[v][i]]==0){
				ch[map[v][i]]=1;
				path[L]=map[v][i];
				DFS(map[v][i], L+1);
				ch[map[v][i]]=0;
			}
		}
	}
}
				
int main(){
	//freopen("input.txt", "rt", stdin);
	int m, i, j, a, b, c;
	scanf("%d %d", &n, &m);
	for(i=1; i<=m; i++){
		scanf("%d %d", &a, &b);
		map[a].push_back(b);
	}
	ch[1]=1;
	path[0]=1;
	DFS(1, 1);
	printf("%d\n", cnt);
	return 0;
}

package inflearn;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.Vector;

public class _66_경로탐색_인접리스트 {{

	static int []ch= new int[30];
	static int cnt = 0, n;
	static int []path= new int[30];
	//vector<int> map[30];		
	static Vector<Integer> map = new Vector<Integer>(30);
 
	static  void DFS(int v, int L){
		int i, j;
		if(v==n){
			cnt++;
			for(j=0; j<L; j++){
				System.out.printf("%d ", path[j]);
			}
			System.out.println("");
		}
		else{
			for(i=0; i<map[v].size(); i++){
				if(ch[map[v][i]]==0){
					ch[map[v][i]]=1;
					path[L]=map[v][i];
					DFS(map[v][i], L+1);
					ch[map[v][i]]=0;
				}
			}
		}
	}
					


	public static void main(String[] args) throws IOException {
			
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			StringTokenizer st; 
			Scanner sc= new Scanner(System.in);
			st = new StringTokenizer(br.readLine()," ");
			

			int n,m, i, j, a, b, c;
//			scanf("%d %d", &n, &m);
			n = Integer.parseInt(st.nextToken());
			m = Integer.parseInt(st.nextToken());
			st = new StringTokenizer(br.readLine()," ");
			
			for(i=1; i<=m; i++){
//				scanf("%d %d", &a, &b);
				a = Integer.parseInt(st.nextToken());
				b = Integer.parseInt(st.nextToken());
				
				map[a].push_back(b);
			}
			ch[1]=1;
			path[0]=1;
			DFS(1, 1);
			System.out.printf("%d\n", cnt);
		
		}
}

C++ 코테 준비 같이 해요!

답변 1

1

김태원

안녕하세요^^

저는 인접리스트를 ArrayList로 구현합니다.

경로탐색을 인접리스트로 짜본것입니다.

import java.util.*;
class Main {
	static int n, m, answer=0;
	static ArrayList<ArrayList<Integer>> graph;
	static int[] ch;
	public void DFS(int v){
		if(v==n) answer++;
		else{
			for(int nv : graph.get(v)){
				if(ch[nv]==0){
					ch[nv]=1;
					DFS(nv);
					ch[nv]=0;
				}
			}
		}
	}
	
	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		n=kb.nextInt();
		m=kb.nextInt();
		graph = new ArrayList<ArrayList<Integer>>();
		for(int i=0; i<=n; i++){
			graph.add(new ArrayList<Integer>());
		}
		ch=new int[n+1];
		for(int i=0; i<m; i++){
			int a=kb.nextInt();
			int b=kb.nextInt();
			graph.get(a).add(b);
		}
		ch[1]=1;
		T.DFS(1);
		System.out.println(answer);
	}	
}

0

Solioquies

감사합니다. 혹시 개인적인 바램이지만 자바강의는 만들생각 없으신지 여쭤봐도 될까요.

0

김태원

자바 강의 만들기 시작한지 1주일 정도 되었습니다. 2주 정도 더 찍어서 초반부가 완성되면 일단 오픈하고 연재식으로 할까 합니다. 그리고 할인기간 한달 안에 완성하는게 목표입니다. 

0

Solioquies

오 자바 강의도 나온다니 기대하고 있겠습니다 감사합니다.

테스트 케이스 질문

0

368

1

병합정렬 시간복잡도 질문

0

459

1

41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.

0

1340

2

질문드립니다.

0

373

1

질문드립니다!

0

425

1

dev 프로그램 질문

0

271

1

문제가 이해가 안되요

0

371

1

4번 나이차이 문제 접근법 질문 드립니다.

0

303

1

source file not compiled

0

1030

3

59번 질문드립니다.

0

367

1

25번 문제 질문

0

343

1

4. 나이차이 문제 질문입니다.

0

364

1

90번 라이언 킹 심바 1번 테스트 케이스

0

465

1

71번 문제 전역 변수 질문 있습니다

0

355

1

75번, 79번 priority_queue관련

1

351

1

75.최대 수입 스케줄

0

392

2

복면산 정답의 수

0

424

1

테스트 케이스에 대해서

0

439

1

수업 내용 질문입니다!

1

227

1

풀어보면 좋은 문제 목록 - 2580 스토쿠 DFS 질문입니다!!

0

814

2

12. 플로이드-와샬(그래프 최단거리) . 27:25초

0

248

1

다른 풀이 방식

0

312

1

크루스칼 vs 프림

0

301

1

숫자 총개수 small 질문있습니다.

0

232

1