공부하다 보면 항상 부족한 점이 많다고 느낀다. 그럴수록 더더욱 기본적인 태도가 중요함을 느낀다.
코딩은 평소 습관이 중요하다. 알고리즘대회나 코테를 치는 경우 평소 코딩습관이 그대로 반영되어 큰 영향을 미치곤 한다. 따라서 대회나 시험당일에 빠르고 효율적으로 문제를 풀기 위해 평소 길러야할 기초 코드 작성요령을 정리하려고 한다.
종만북이라는 유명한 책이 있다. 대회를 통해 배우는 알고리즘 문제해결전략이라는 책이다. 필자는 이 책을 참고하여 알고리즘을 연습중이다. 따라서 공부하며 느낀점을 따로 정리하려고 한다.
1. 반복은 되도록이면 피하는게 좋다.
코딩을 할 때 가장 우선시되어야할 기본적인 태도이기도이다. 조건문이나 반복되는 변수를 사용할 때 이를 활용하면 시간을 절약할 수 있다.
2. 변수명은 최대한 깔끔하게 짓는것이 좋다.
변수명을 지을 때 최대한 한눈에 알아볼 수 있도록 짓는것이 좋다. 흔히 쓰이는 기술은 다음과 같다.
- index → idx
- maximum → max
이렇게 최대한 자기만의 규칙을 만들어 혼동이 없도록 훈련해두어야 한다. 나는 주로 변수를 3를자로 압축하여 짓는 편이다. 그러나 변수명이 너무 길어서 줄일 수 없는 경우가 있다. 이는 전처리기 지시자를 활용하여 매크로로 설정해두면 자신만의 변수명으로 편하게 활용할 수 있다.
3. 중첩조건문은 피하는게 좋다.
if문으로 작성하다 여러 번 중첩될 경우 논리가 많이 복잡해진다. 특히 문제의 난이도가 조금만 어려워져도 모든 case를 걸러내지 못할 뿐더러 구현했다 하더라도 디버깅이나 test중 오류를 찾을 때 꼬일 가능성이 크다. 따라서 중첩이 여러번 발생하는 경우 다시 원점으로 돌아가서 내 논리가 더 깔끔해질 수는 없는지, 더 효율적일 수는 없는지 다시 생각해보는 것이 좋다.
4. 사전에 실수할 거리를 미리 체크하는 것이 좋다.
초보들이 흔히 하는 실수 중 하나가 변수의 범위나 시간복잡도이다. 다 구현해놓고 변수의 범위가 21억이 넘어가서 overflow가 난다거나 시간복잡도가 초과되는 경우이다. 처음에 생각했다고 하더라도 구현하다가 까먹거나 잊어버려 놓칠 수도 있다. 따라서 미리 조건이나 범위를 체크하여 알 수 있도록 표시해두고 접근하는 태도가 중요하다.
5. 숲에서 나무로, 거시적 관점에서 미시적 관점으로 접근한다.
무작정 손부터 나가기보다 크게 논리를 생각하여 점진적으로 코드로 접근해야 한다. 그러나 너무 논리만 생각하다가 코드로 접근하지 못할수도 있고 너무 대충 논리를 짜다가 코드가 안나오는 경우도 있으니 이사이의 괴리를 최대한 좁혀서 자신만의 타협점을 찾아야 한다. 많은 경험과 문제풀이를 통해 이를 쌓아야 한다.
6. 맞춘 문제라도 배울 수 있는것은 배우자
내가 제출한 문제가 맞았다고 하더라도 다른 사람들이 공개한 코드를 보고 더 쉽고 간결하며 실수가 적은 방향으로 구현할 수 있으면 보고 배우는 것이 좋다. 사실 이 방법이 나를 한단계 더 발전시킬 수 있는 가장효율적인 방법인 것 같다.
'PS' 카테고리의 다른 글
코딩테스트 유형정리 (0) | 2023.11.24 |
---|---|
C++에서 입출력 버퍼 정리하기: tie와 sync_with_stdio (0) | 2023.10.21 |
경이로운 BE 개발자가 되기 위한 프로그래밍 공부 기록장
도움이 되었다면 "❤️" 또는 "👍🏻" 해주세요! 문의는 아래 이메일로 보내주세요.