눈치우기 (boj 26215)

2022. 12. 19. 13:24boj

https://www.acmicpc.net/problem/26215

 

26215번: 눈 치우기

집 2와 집 3 앞의 눈을 치우고, 집 2와 집 3 앞의 눈을 치우고, 집 1과 집 3 앞의 눈을 치운 뒤 집 3 앞의 눈을 두 번 치우면 5분만에 모든 집 앞의 눈을 치울 수 있다.

www.acmicpc.net

 

[26215번: 눈 치우기

집 2와 집 3 앞의 눈을 치우고, 집 2와 집 3 앞의 눈을 치우고, 집 1과 집 3 앞의 눈을 치운 뒤 집 3 앞의 눈을 두 번 치우면 5분만에 모든 집 앞의 눈을 치울 수 있다.

 

내가 문제를 봤을 때 접근한 방식은

가장 큰 값을 찾고, 2번째로 큰 친구를 찾는데. 가장 큰값이 0 이면 프로그램을 종료하고 리턴하는 방식을 이용했다.

int solution(int n)
{
    while (true) {
        int biggest = get_max(n, -1);
        int bigger = get_max(n, biggest);
        if (biggest == -1)
            break ;
           --map[biggest];
        if (bigger != -1)
            --map[bigger];
        ++cnt;
    }
    return (cnt);
}

사실 위와 같은 방식은 n 의 최대값이 100, 그리고 biggest의 값이 2000 이하로 들어오기 때문에 

최대 로 돈다고 가정 하고 돌렸을때 2000000번정도 함수를 도는것 같았다. 따라서 경우가 조금더 커진다면

효율적으로 로직을 구상해보려고 노력 해야 할 듯 하다 .

 

'boj' 카테고리의 다른 글

1697 숨바꼭질.  (0) 2022.12.21
1021 회전하는 큐.  (0) 2022.12.21
수열의 합 1024  (0) 2022.12.21
1012 유기농 배추.  (0) 2022.12.20
1010 다리놓기  (0) 2022.12.19