MAGICPOWER 질문있습니다.

  • tyjk32
    tyjk32

    (마력 값 - 1)을 배열의 index로 사용하여 갯수를 증가, 감소 시키는 방식으로 갯수를 관리하여 계산하였습니다.
    마력약의 갯수가 0개일 경우도 처리하였지만 계속 오답처리가 되네요..
    문제의 테스트케이스와 제 나름대로 몇가지 경우를 만들어서 실행해본 결과 아무 이상이 없었습니다.
    어느 부분이 잘못된 것인지 알 수 있을까요??

    #include <stdio.h>
    
    #define MAX 10000
    
    int mp[MAX];
    
    int main(void)
    {
        int t, i, j, k;
        int n, m, input;
        int max = 0, total;
    
        scanf("%d", &t);
    
        for(i = 0; i < t; i++)
        {
            scanf("%d %d", &n, &m);
    
            total = 0;
    
            for(j = 0; j < n; j++)
            {
                scanf("%d", &input);
    
                mp[input - 1]++;
    
                if(max < input)
                {
                    max = input;
                }
            }
    
            for(j = 0; j < m; j++)
            {
                total += max;
                mp[max - 1]--;
    
                if(mp[max - 1] == 0)
                {
                    for(k = max - 2; k >= 0; k--)
                    {
                        if(mp[k] != 0)
                        {
                            max = k + 1;
                            break;
                        }
                    }
    
                    if(k == -1)
                    {
                        max = 0;
                        break;
                    }
                }
            }
    
            printf("%d\n", total);
        }
    
        return 0;
    }
    

    10년 전
5개의 댓글이 있습니다.
  • Being
    Being

    문제를 잘못 이해하신 것 같습니다. 5가 쓰여진 약을 한 차례 사용하면 마력이 5가 회복됨과 동시에 4로 쓰여진 약으로 변합니다.


    10년 전 link
  • tyjk32
    tyjk32

    음.. 문제의 테스트 케이스에서

    2
    2 1
    3 4
    3 3
    3 2 4

    인 경우에 각각 4와 10이 출력되야 하는데, 첫번째 경우에 3짜리 1개 4짜리 1개가 있으므로 4가 출력되는 것이고, 두번째 경우에 기존의 것까지 3짜리 2개, 2짜리 1개, 4짜리 1개가 있어서 3개를 먹으면 최대값 10이 되는것 아닌가요??


    10년 전 link
  • tyjk32
    tyjk32

    아 아이템을 사용하면 갯수가 줄어드는것이 아니라 적혀있는 수가 줄어드는 것이었네요... 이제야 이해했습니다.. 매번 감사합니다 :)


    10년 전 link
  • Being
    Being

    서로 다른 테스트 케이스인데 왜 기존의 3개짜리를 생각하시나요? 문제를 차근히 처음부터 다시 읽어보시기 바랍니다.


    10년 전 link
  • Being
    Being

    네 다행이네요 :)


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.