본문 바로가기

2025년 1회 정보처리기사 실기. Java Math.max(), 재귀함수 문제

by 귀엽소 2025. 4. 26.
반응형

public class Maximal {

 

 static int func(int[]a, int st, int end) { func 메소드. (int[]a=values 배열주소, int st=0, int end=values.length-1=5-1=4)

  if(st>=end) return 0; st가 end보다 크거나 같으면 return 0하라.하지만 0>=4 틀리니까 아래줄로 이동하게됨.

  int mid=(st + end) /2; st+end=0+4=4 니까 mid=4/2=2

 return a[mid]+Math.max(func(a, st, mid), func(a, mid+1, end)); a[2]=8+재귀함수 2개 등장! (처음에 이거 보자마자 멘붕옴... 근데 유툽 해설 보니까 생각보다 쉬워서 광광 우러따...)

}

st, end mid a[mid] func(a, st, mid) func(a, mid+1, end) Math.max(첫번째),(두번째) return 값
0, 4 4/2=2 8 func(a, 0, 2)
=8
func(a, 3, 4)
=12
큰 거 선택 12 8+12=20
0, 2 2/2=1 5 func(a, 0, 1)
=3
func(a, 2, 2)
st>=end니까
return 0

3 5+3=8
3, 4 6/2=3 12 func(a, 3, 3)
st>=end니까
return 0
func(a, 4, 4)
st>=end니까
return 0

   
0, 1 1/2=0
3 func(a, 0, 0)
st>=end니까
return 0
func(a, 1, 1)
st>=end니까
return 0

   

 

public static void main(String[] args) {

  int[]values = {3, 5, 8, 12, 17};

[0] [1] [2] [3] [4]
3 5 8 12 17

  System out println(func(values, 0, values.length-1)); 시작점. func 메소드 호출.

  }

}

정답:
20

 

https://youtu.be/JzeDc6p3wW4?si=Sv19bA6nOsjYT3Vy

 

반응형

댓글