RATIO 문제 오답의 원을 못찾겠습니다. wondaebal 수식으로 계산해서 1% 증가할 때 의 i 값을 찾고 그 값으로 우선 대입하여 비교하고 혹시나 i 값이 모자랄 것을 대비해 while안에서 제한 범위 내에서 증가하도록 하였습니다. 조금씩 바꾸면서 예외도 바꿔보고 했는데 실행시간도 빠르고 테스트 케이스도 많이 넣어봣는데 계속 오답으로 나와서, 왜 그런지 궁금합니다! #include <stdio.h> #include <math.h> int main() { int number=0; int play = 0; int win = 0; double temp=0.0; int Z=0; int result=0; int extra=0; bool flag=false; int i=0; scanf("%d",&number); while( number--) { scanf("%d %d",&play,&win); temp = ((double)win/play)*100; Z = (int)temp; if( Z >= 99 ) flag = false; else{ i = (int)ceil( ( (double)( win*100 - (Z+1)*play ) / ( Z-99 ) ) ); while( i <= 2000000000) { result = (int)((double)(win + i)/(play + i)*100) ; if( (Z + 1) <= result ) { extra = i; flag = true; break; } else flag = false; i++; } } if( flag ) printf("%d\n", extra); else printf("%d\n",-1); } return 0; } 혹시 예상치 못하게 while문에서 못나오는 경우가 발생할까봐 while만 빼고 해봤는데 안되서 쓸데없는거 다 빼버리고 아래처럼도 해봤는데도 오답이 계속 발생하네요.. #include <stdio.h> #include <math.h> int main() { int number=0; int play = 0; int win = 0; int Z=0; scanf("%d",&number); while( number--) { scanf("%d %d",&play,&win); Z = ((double)win/play)*100 + 1; if( Z < 100 ){ printf("%d\n", (int)ceil( ( (double)( win*100 - Z*play ) / ( Z-100 ) ) )); }else printf("%d\n",-1); } return 0; } 치명적인 실수가 있는건지 궁금합니다. 10년 전
7개의 댓글이 있습니다. astein 일단 아래코드에서는 Z = 100일때 문제가 되겠네요 :) 10년 전 link wondaebal 댓글감사합니다. 그런데 Z=100인 경우는 사실 불가능한 경우 아닌가요?? 조건문에 의하면 -1이 출력될것 같은데 다른 문제가 있는건가요??? 10년 전 link astein 두번째 코드에서 Z 계산과정 마지막에 +1이 있기 때문에 불가능한 경우가 아닐 것 같습니다 10년 전 link astein 혼선을 드려서 죄송합니다. 코드를 잘못 읽었네요. 아래코드에서 오답을 출력하는 예제를 하나 올려드리겠습니다. 1700 493 10년 전 link astein 테스트하면서 자기의 답에서 오류가 나오는 데이터를 직접 찾아보는것도 좋은 공부라고 생각합니다 :) 랜덤 데이터 제네레이터를 만들어서 테스트 하는 것이 그 중 쉬운 한 가지 방법이지요... 10년 전 link Being 네, 손으로 넣어도 도저히 모르겠을 때는 입력을 생성해 보는 것도 한 방법입니다. :) 10년 전 link wondaebal 아 랜덤으로 데이터를 넣는것도 좋은방법이군요 감사합니다! 문제를 해결하였습니다! 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
wondaebal
수식으로 계산해서 1% 증가할 때 의 i 값을 찾고 그 값으로 우선 대입하여
비교하고 혹시나 i 값이 모자랄 것을 대비해 while안에서 제한 범위 내에서 증가하도록 하였습니다.
조금씩 바꾸면서 예외도 바꿔보고 했는데 실행시간도 빠르고 테스트 케이스도 많이 넣어봣는데 계속 오답으로 나와서, 왜 그런지 궁금합니다!
혹시 예상치 못하게 while문에서 못나오는 경우가 발생할까봐
while만 빼고 해봤는데 안되서 쓸데없는거 다 빼버리고 아래처럼도 해봤는데도 오답이 계속 발생하네요..
치명적인 실수가 있는건지 궁금합니다.
10년 전