본문 바로가기

알고리즘

탐욕(그리디) 알고리즘

728x90

쉬운 문제라서 한 번에 맞혔다. 근데 그리디로 푼 건지 모르겠어서 더 좋은 방법이 있나 찾아보는 중

class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int[] student = new int[n];
        
        for(int i : lost){
            student[i-1] -=1;
        }
        
        for(int i : reserve){
            student[i-1] +=1;
        }
        
        for(int i=0; i<student.length; i++){
            if(student[i]==-1){
                if(i!=0){
                    if(student[i-1] == 1){
                        student[i]+=1;
                        student[i-1]-=1;
                    }
                }
                if(i!=student.length-1){
                    if(student[i+1] == 1){
                        student[i]+=1;
                        student[i+1]-=1;
                    }
                }
            }
        }
        
        int count = 0;
       for(int i : student){
           if(i!=-1){
               count++;
           }
       }
        

        return count;
    }
}

programmers.co.kr/learn/courses/30/lessons/42862#qna

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번

programmers.co.kr

 

탐욕 알고리즘이 필요할 때

: 부분적으로 최적인 해가 전체적으로 최적이 아닌 해가 존재하지 않을 때

: 즉, 현재 상황에서 가장 좋은 결정을 하면 문제가 풀릴 때!

'알고리즘' 카테고리의 다른 글

백준 11399 String[] -> Int[]  (0) 2021.02.18
백준 16435 BufferedReader와 Scanner  (0) 2021.02.17
1로 만들기  (0) 2021.02.06
알고리즘27 LCA  (0) 2020.12.03
알고리즘26-2 lowest common ancestor  (0) 2020.11.28