logo

오답(WA) 발생 시 어떻게 해야 하나요?

틀린 답이 오히려 너무 큰 고통을 주는 경우가 항상 있었습니다. TLE(시간 제한 초과) 이전에는 어떤 테스트 사례가 실패했는지 확인할 수 없었지만 나중에는 어떤 N(총 명령어) 값에 대해 TLE가 표시되는지 추정할 수 있습니다. 
 

그럼 그 때는 어떻게 해야 할까요?

    질문을 주의 깊게 읽으십시오:처음 WA(잘못된 답변)를 받았을 때 항상 모든 단어를 읽고 질문을 완전히 이해했는지 확인하십시오. 대부분의 경우 전체 질문의 기초가 되는 특정 부분을 건너뛰었기 때문입니다. 
     입력/출력 형식을 확인하십시오.대부분의 프로그래머는 질문의 요구 사항에 따라 새 줄이나 공백을 추가하는 것을 잊어버립니다. 따라서 온라인 심사위원에게 솔루션을 제출하기 전에 다음과 같은 온라인 컴파일러에서 프로그램을 실행해 보십시오. code.geeksforgeeks.org 또는 이데온 .프로그램의 알고리즘/논리를 확인하십시오.모든 테스트 사례를 포괄하는 올바른 논리를 사용하고 있는지 확인하십시오. 
     코너 테스트 케이스가능하다면 0 1 2 또는 N과 같은 경계 테스트 사례에서 코드를 실행해 보세요. 

     

어리석은 실수를 피하세요



    변수 초기화:때때로 우리는 모든 테스트 케이스 T 후에 변수 배열을 다시 초기화하는 것을 잊어버립니다. 예를 들면 다음과 같습니다. 
    • count 변수의 값을 0으로 초기화합니다.
    • DP[] 배열의 모든 값을 0 또는 -1로 설정합니다.
    데이터 유형 오버플로:항상 N 값이나 기타 입력에 대한 제약 조건을 염두에 두고 프로그램을 C/C++의 int long long 또는 JAVA의 int long과 같은 올바른 데이터 유형 범위로 만들어 오버플로를 방지하세요. 
     모듈형 문제:Modular Arithmetic (답변 % MOD)와 같은 질문에서는 항상 답이 음수 값을 얻지 않도록 하여 모든 가능성을 포괄하는 (답변 + MOD) % MOD를 사용해 보십시오. 
     

디버깅  

    가장 중요한 부분은 디버깅입니다.C/C++ 및 JAVA에서 각각 Codeblock Eclipse의 내장 디버거를 사용하거나 각 줄마다 변수를 인쇄하여 프로그램이 요구 사항에 따라 실행 중인지 여부를 추정할 수 있습니다.어설션 사용:코드에 많은 줄을 작성하려면 Assert()를 사용하는 것이 그만한 가치가 있습니다. 딸깍 하는 소리 여기 경쟁 프로그래밍에서 어설션을 사용하는 방법에 대해 자세히 알아보세요. 
     주어진 제안을 찾으십시오:이것이 마지막 단계여야 하지만 다른 프로그래머들도 동일한 문제에 직면했을 수 있고 이 문제를 근절하는 방법에 대한 힌트를 제공한 아래 설명을 살펴보아야 합니다.



궁극적으로 항상 목적이 잘 정의된 작은 함수로 깔끔한 코드를 작성하려고 노력하세요.  

 

퀴즈 만들기