본문 바로가기
CODING TEST/THEORY

[Do it 코테 자바편] 디버깅

by 정성인(人) 2024. 5. 16.

  • 영상에선 디버깅할 때, ide를 활용하는 걸 전제로 말하고 있다.
    • 중단점 여러 개 찍고
    • ide 디버깅 기능으로 한 줄씩 실행해보거나, 다음 중단점까지 실행 가능하며
    • 변숫값도 추적 가능하며
    • 내가 원하는 수식 입력해서 흐름을 파악 가능하다.
  • 그러나 코테에선 ide를 막는 경우가 많다고 한다. 프로젝트 할 게 아니라 알고리즘과 자료구조만 보는데, 필요하냐는 거란 논리인가.

 

흔하게 일어나는 오류 4가지

  • 자료형 범위 오류: (제일 많이 나에게 시련을 준...) 그냥 int 대신 long형을 써라.
    • 오버플로우로 고민했던 적이 지금도 기억에 남는다. 
    • 처음엔 굳이 불필요한 메모리를 쓰면 뭔가 멋이 안 난다. 그리고 면접관이 나에게 불필요하게 int 써도 되는데 long을 쓰냐고 묻는 상상을 하니 더더욱 수의 범위에 알맞게 자료형도 달리 하려고 했다.
    • 그러나 현실은 헬이었다. 단순히 변수를 그대로 두는 게 아니다. 다른 변수와 지지고 볶고 더하고 빼고 곱하고 난리난다. 그러니 선언한 변수형 범위를 나도 모르게 넘었던 것이다. 그거 찾으려고 눈 빠지게 다른 부분 찾다가 겨우 찾았다.
  • 변수 초기화 오류: 보통 반복문 돌리면서 어떤 변수에 더하고 빼고 난리치며 변경시킨다. 그 후 다시 반복문 돌 때는 그 변수가 초기값, 주로 0으로 되어야 하는데, 그걸 안 넣어서 기존에 가지고 놀았던 값이 계속 이어지는 거다.
  • 반복문에서 인덱스 범위 지정 오류: 배열에 백만 개의 자리를 할당했고, 반복문으로 이 배열을 꽉 채우고 싶은 상황 > 근데 반복은 십만으로 해 버린 거지 OR for(i=0)을 할지 for(i=1)을 할지, 또 for (;i<n)할지 for(;i<=n)도 실수 포인트
  • 잘못된 변수 사용 오류: 그냥 변수 이름을 잘 지어 놓은 게 혼동을 불러일으키는 경우 있다는 소리. t, testcase나 n, num, nums, number 같이 이름 비슷한 변수 혼동해서 답 출력도 배 다른 아이로 한다는 말