adtoptf
10
2019-11-09 00:12:11
2
125

백준 10610번 그리디 알고리즘 질문


어떤숫자가 주어졌을때 30의배수중 가장큰수를 찾고 아니면 -1을 출력하는코드인데

bool compare(int a,int b)

{

    return a>b;

}


int main()

{

    //배열에 각숫자 저장  ex 3 1 5 0 4  

    int sum;

    char num[100000];

    cin >> num;

    int size=strlen(num);

    

    //여기부분이 잘안됨

    for(int i=0; i<size; i++)

    {

    if(num[i]==0)

    break;

    else if(i==size-1)

    {

        cout << "-1";

        return 5;

    }

    }

    //분류후 출력

    sort(num,num+size,compare);

    for(int i=0; i<size-1; i++)

    sum+=num[i];

    

    if(sum%3==0)

    {

        for(int i=0; i<size; i++)

        cout << num[i];

    }

    else

    cout <<"-1";

}

배열에 0이있을때까지 검색하다가 나오면break

끝까지가도 0이없다 그러면 -1을 출력하는코드가 작동이 잘안되는것같습니다.

32510을 입력했을때 size=5가되고 
반복문에서 i가 1,2, ....  4가될때 num[4]=0 이므로 break후 반복문 탈출이란게 제생각인데... 이상하게 -1이나오네요
혹시 이게 if->break-> else if 구문 실행 -> 반복문 탈출 순이라 그런것인가요???
제생각엔 if->break->for문탈출이었는데 도와주세요

    

0
0
  • 답변 2

  • rezigrene
    1k
    2019-11-09 01:57:39

    c쪽은 거의 안해봤으나

    '0' 과 0은 다를거 같습니다.

    0
  • StartDV
    99
    2019-11-10 12:10:35

    배열에 입력하는 부분에서 문제로 보입니다.

    배열에 숫자를 하나 씩 입력하고 싶으신 것 같아 보이는데,

    입력 부분을 위와 같이 하신다면 아마 하나만 입력되고 말 것으로 보입니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.