반응형
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
반응형
'정보처리기사 필답 실기' 카테고리의 다른 글
C언어, Java, 파이썬 코멘트 주석 처리 (0) | 2025.04.27 |
---|---|
2025년 1회 정보처리기사 실기. Java 오버로딩 문제 (0) | 2025.04.26 |
2025년 1회 정보처리기사 실기. Java static 메서드 문제 (0) | 2025.04.26 |
25년 1회차 정보처리기사 실기. Java try-catch 문제 (0) | 2025.04.26 |
25년 1회차 정보처리기사 실기. C언어 아스키코드 문제 (0) | 2025.04.26 |
댓글