강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

yjk9805님의 프로필 이미지
yjk9805

작성한 질문수

Java TPC (생각하고, 표현하고, 코딩하고)

private 생성자도 있어요?(static과 관계)

클래스 내부의 인스턴스 메서드 끼리의 호출

작성

·

320

0

이 강의로 자바 기초를 다지면서 자바 알고리즘 강의도 듣고있습니다. 강의를 듣다가 궁금해진게 한 클래스 내부에서 static main 메서드 안에서 인스턴스 메서드를 호출할때는 Main클래스를 생성해서 호출하지만 재귀함수나 두개 이상의 인스턴스 메서드끼리 상호작용 할 때는 객체를 생성하지 않고 클래스 이름도 붙이지 않고 바로 메서드를 사용할수있는데 이는 어떤경우일까요? 답변주시면 감사하겠습니다.

아래 코드는 예시입니다.

solution 메서드에서 DFS메서드호출하는부분이 궁급합니다

class Main {
	static int n,m,answer =0;
	static int[] dx = {-1, -1, 0, 1, 1, 1, 0,-1};
	static int[] dy = { 0, 1, 1, 1, 0,-1,-1,-1};
	public void DFS(int x, int y, int[][] board) {
		for(int i=0;i<8;i++) {
			int nx=x+dx[i];
			int ny=y+dy[i];
			if(nx>=0 && nx<n && ny>=0 && ny<n && board[nx][ny]==1) {
				board[nx][ny]=0;
				DFS(nx,ny,board);
			}
		}
	}
	public void soulution(int[][] board) {
		for(int i=0;i<n;i++) {
			for(int j=0;j<n;j++) {
				if(board[i][j]==1) {
					answer++;
					board[i][j]=0;
					DFS(i,j,board);
				}
			}
		}
	}
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		n=kb.nextInt();
		int[][] arr = new int[n][n];
		for(int i=0;i<n;i++) {
			for(int j=0;j<n;j++) {
				arr[i][j]=kb.nextInt();
			}
		}
		T.soulution(arr);
		System.out.println(answer);
 	}                 
}   

답변 1

0

박매일님의 프로필 이미지
박매일
지식공유자

Main T=new Main();을했기 때문에 이미 메서드는 메모리에 올라가 있는 상태이구요. 또 같은 클래스내에 2개의 메서드가 있다면 1의 메서드에서 2의 메서드는 메서드 이름으로 호출이 가능합니다~^

yjk9805님의 프로필 이미지
yjk9805

작성한 질문수

질문하기