[회고록] 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으로 나누는 예외처리를 꼭 해주도록 하자.
Leave a comment