본문 바로가기
코딩테스트-파이썬

1.2코딩과 디버깅

by 시니성 2023. 7. 20.

코딩테스트를 빠르고 정확하게 풀기위해서는 디버깅을 잘 수행하는 것이 중요하다.

왜냐하면, 한 번에 원하는 대로 작동하는 코드를 짜는 마술은 없기 때문이다.

 

* 잘 짠 코드란 무엇일까?

평가 기준

시간 복잡도 >>>>> 공간 복잡도 > 가독성

-> 각각의 개념에 대해선 다른 게시글에서.

 

* 코드를 짤 때 흔히 하는 실수

1. 존재하지 않는 요소에 접근(ex. 배열 인덱스 범위 초과)

2. 파이선에서는 배열 슬라이싱 기능을 사용할 때 [시작 위치(포함), 종료 위치(포함 안 함), 간격]이라는 걸 항상 기억

3. '~보다 크다/작다' 조건으로 조건식을 만들 떄, 조건의 경계값을 제대로 체크하지 않아 의도하지 않게 동작하기도 함

4. 연산자 우선순위도 빠질 수 없음(헷갈리면 무조건 명시적으로 괄호 표기)

5. 자료형 변환 유념

6. 최대치나 최소치 설정을 제대로 했는지 검사

7. 반복문이나 재귀 함수에서 종료 조건이 어긋나 무한루프에 빠지지 않도록 주의(반복문은 항상 조건이 FALSE일 때 종료됨)

8. 절대 0으로 곱하거나 나누지 말 것

 

* 디버깅과 시행착오를 줄이는 방법

코드를 테스트 하는 과정을 줄이는 방법은 자신이 얼마나 그 코드를 확신할 수 있는지에 달려 있기 때문에, 결국 '많이 푸는 것'외에 시간을 효과적으로 줄이는 방법은 없음.

하지만 불필요한 디버깅과 시행착오를 줄일 수 있는 몇 가지 사항은 존재함.

1. 개발할 기능을 과정별로 모듈화 해야 한다.

    -> 책임소재가 명확해 짐으로써, 디버깅의 범위를 대폭 축소할 수 있다.

2. 변수를 사용할 때 제일 위에 선언하는 상수, 메인 함수에서 사용하는 전역 변수, 모듈 내부에서 사용하는 지역 변수를 확실히 구분 짓고(변수의 스코프를 항상 염두에 둘 것), 이를 어디서 초기화 하고 사용하는지 명시적으로 표시 해야한다.

3. 변수 이름은 항상 의미를 갖도록 작명해야 한다.

4. 외부 라이브러리 사용을 자제하고, 내부 표준 라이브러리를 적극적으로 사용하는 습관을 들여야 한다.

5. 파이선에서 지원하지 않는 기능(삼항 연산자, 증감 연산자 등)을 파악하고, 대체재를 아는 것이 중요하다.