[회고록] 0으로 나누기

Updated:

0으로 나눌 수 있는 숫자는 당연히 없다

오늘도 역시 프로그래머스 문제 https://programmers.co.kr/learn/courses/30/lessons/42889 를 풀다가 오답 판정을 받았다. 아래는 오답판정을 받은 소스코드의 핵심 부분

for(int i = 1; i <= N; i++){
         //실패율 계산
         double x = (double) users_perStage[i] / userNumber;
        
         failures.push_back(make_pair(i, x));

        userNumber -= users_perStage[i];
    }

왜 틀렸나 봤더니 userNumber 가 0 이 되는 순간에도 나누기를 해줘서 예외가 발생한 것이다. 어떤 숫자를 0으로 나눌 수 있는 경우는 없기 때문에. 그래서 아래 처럼 수정하였다.

for(int i = 1; i <= N; i++){
        double x = 0; // 스테이지에 도달한 유저가 없는 경우

        if(userNumber >= 1){ // 스테이지에 도달한 유저가 있는 경우
            x = (double) users_perStage[i] / userNumber;
        }
        
         failures.push_back(make_pair(i, x));

        userNumber -= users_perStage[i];
    }

앞으로 나눌 때에는 0으로 나누는 예외처리를 꼭 해주도록 하자.

Categories:

Updated:

Leave a comment