이번 편은 쉬어가는(?) 편입니다.

 

온라인저지 시스템에 제출할때 몰라도 크게 상관은 없지만 알면 예상치 못하게 도움이 되는 것입니다.

 

1. 시험을 볼때 C C++ 선택하면 Visual Studio JAVA이면 Eclipse PC에서 TEST

    온라인저지 시스템에 제출하게 되는데 환경이 달라서 PC에서는 문제가 없지만

    서버에 제출하면 문제가 되는 경우도 있고 서버에는 문제가 없으나 PC에서는

    문제가 있는 경우도 있습니다.

   

    표준입출력으로 scanf printf 쓰게 되는데 함수들이 buffer overflow 발생시킬   있는

    문제가 많은 함수라 Visual Studio에서는 못쓰게 하고 대신 scanf_s 같은 함수를 쓰도록 하는데

    검정시스템에서는 scanf 쓰기 때문에 프로젝트를 만들때 SDL 체크 해제하게 합니다.

 

    그런데 SDL 해제 체크하더라도 warning 발생하는데 warning이라서 동작에는 문제가 없는데

    신경이 쓰인다면 

     #pragma warning(disable: 4996) 사용하면 됩니다.

    (warning 번호가 4996 이니 숫자를 외울필요는 없습니다.) 

 

    해당 주제는  아래 글을 참고하세요.

    http://lureout.tistory.com/425

 

    동작에는 문제가 없으니 무시하고 해도 됩니다. 하지만 warning 무시하는 습관이 들면

    다른 warning 무시하고 그냥 하는 경우도 발생해서 괜히 시간을 보내는 경우도 많이 있습니다.

 

2. 입력되는 값의 범위를 봐야 합니다.

 

    입력되는 값들이 경우는 int 대신 long long 써야 합니다.

    C 처음 배울때나 써봤지 이후는 안써봤는데 일부러 입력값들을 크게 해서

    long long 쓰지 않으면 int 범위를 넘게 하는 트릭형 문제들도 있습니다.

 

    물론 계산 과정 중에 곱셈과 나눗셈이 있을때

    곱셈을 했을때 int 범위가 넘어가는 경우도  확인이 필요하고

    0으로 나누어지지 않는지 확인도 필요합니다.

    PC에서는 확인이 쉽지만 저지시스템에 넣으면 확인이 안되고 그냥 error 발생하거나

    틀렸다고 나옵니다.

 

3. 입력되는 값의 범위에 따라 TC 만들어봐야 합니다.

 

    소프트웨어 공학에 Test Case 만드는 것에 대해 나오는데

    입력변수가 여러개라서 모든 조합을 없다면

 

    1) 입력 변수의 경계값

    2) 입력 변수의 경계값의 조합

 

     TEST하고 제출해야 합니다.

    그렇지 않고 주어진 TC TEST하고 넣으면 Fail, 안되는지 고민을 많이 하게 됩니다.

 

4. 많은 분들 아시지만 if 조건에 상수를 앞에 쓰는 습관을 가지면 좋습니다.

 

    if(a == 3) 대신에 if(a = 3)으로 쓰면 문법적으로는 틀리지 않아서 디버깅에 힘들어지는 경우가 있으나

    if(3 == a) 쓰면 혹시 if(3 = a) 실수를 하더라도 컴파일러가 error 발생하니 쉽게 찾을 있습니다.

    (최신 컴파일러는 warning 주기도 합니다. 그래서 warning 무시하면 안됩니다.)

 

#삼성_소프트웨어_역량_테스트

+ Recent posts