26년1학기/알고리즘

알고리즘)문풀2

kimchangmin02 2026. 6. 1. 16:57

 

#F 7번~~[  ]

 

 


 

 

 

public int compare(...) 메서드는 int 타입을 반환해야 합니다.

  • 질문하신 o1.getValue().compareTo(o2.getValue()) > 0는 결과가 true 아니면 false boolean 타입입니다.

 

 

 

  1. 오름차순 정렬: o1.compareTo(o2) (나 - 남)
  2. 내림차순 정렬: o2.compareTo(o1) (남 - 나)

 

 

(Integer 타입이므로 가능):

o2.getValue() - o1.getValue()

 

 

 

 

분할정복법으로 가방문제 

        // 1. 중단 조건 추가 (매우 중요!)
        if (n <= 0 || W <= 0) {
            return 0;
        }

 

 

 

 

 

 

 

 

동적 프로그래밍이 아니니까 P[][]배열이 없는건가,-재귀로 구성(분항정복법)_

있더라도 희소행렬이라서 구리고ㅇㅇㅇㅇ

 

 

어차피 Math.max이고 p[i]+....이니깐, 이 ...부분이 0이 되는거겟지, 1까지 내려가면"


int dontforget=n-1;

 

 

 

 

프림이 greedy\

어떤 알고리즘이 어떤 챕터에 있는지도 

 

 

 

e1.weight - e2.weight;

 

 

 

p 배열은 시작 인덱스를 저장하는 용도이므로, 실제 값을 담으려면 원본 배열인 **A**에서 값을 가져와야 합니다.

 

 

 

기존 코드의 p[i-1][j] = 1 방식은 i나 j가 0일 때 p[-1]을 참조하게 되어

(둘다 0이 아닐때)

 

가장 왼쪽 줄(j=0)에 있을 때는 p 배열을 볼 필요도 없이 무조건 위(i--)로 올라가야 하고, 가장 윗 줄(i=0)에 있을 때는 무조건 왼쪽(j--)으로 가야 한다는 예외 처리가 필요합니다.

 

 

while(true){
    if(i==0 && j==0) break;

    if (j == 0) { // 더 이상 왼쪽으로 갈 수 없으면
        arrList.add(A[--i][j]); // 무조건 위로
    } 
    else if (i == 0) { // 더 이상 위로 갈 수 없으면
        arrList.add(A[i][--j]); // 무조건 왼쪽으로
    } 
    else if (p[i-1][j] == 1) { // 둘 다 가능할 때만 p 확인
        arrList.add(A[--i][j]);
    } 
    else {
        arrList.add(A[i][--j]);
    }
}

 

 

ArrayList는 arrList[index] 같은 배열 기호를 사용할 수 없습니다. 반드시 .get(index)

 

 

리스트에서, arrList.size()가 배열 크기임

리스트에서 배열 변환 

 

 

 

 

 

 

 

 

 

'26년1학기 > 알고리즘' 카테고리의 다른 글

알고리즘) 문풀(26.6.3)  (0) 2026.06.03
알고리즘)greedy(다익스트라등  (0) 2026.06.01
알고리즘) 패턴매칭  (0) 2026.06.01
알고리즘)5장,6장,7  (0) 2026.05.31
알고리즘 )3장 문풀  (0) 2026.05.30