"예외처리를 얼마나 미리, 얼마나 효율적으로 하느냐"에 따라문제풀이 시간과 실제 디버깅 스트레스가 “크게 차이”가 납니다.
여기서 말하는 예외처리는 단순히 try/except 문이 아니라 문제에서 생길 법한 '특수 케이스'나 '극단 상황'을 미리 대비하는 것입니다.
예시
모든 토마토가 이미 익었음 → 0을 출력
익은 토마토가 하나도 없음 → -1
빈 칸밖에 없음 / 토마토가 못 익는 구조 → -1
입력이 비었거나 모양이 이상함 → 에러 없이 깔끔히 종료
예외처리가 “필요 이상으로 너무 많아지면” 오히려 코드가 지저분해지고, 유지보수가 힘들어집니다.
하지만 꼭 필요한 예외처리는 코드 초반에 미리 해주는 것이 대부분의 문제(특히 대회, 코테)에서 “디버깅 시간 단축”에 엄청 도움이 됩니다.
상황 1) 예외처리 없는 경우
여러 가지 특수 입력에서 버그/오류가 나는지 확인하게 되고,
그때마다 print 찍고 찾고, 왔다갔다 하면서 시간 낭비
상황 2) 예외처리 코드를 미리 잘 적은 경우
버그가 잡힌다.
정답 생성이 훨씬 “예측 가능”해진다.
가장 대표적인 예외 케이스
“이미 끝난 상태” (예: 이미 다 익은/다 방문된/불필요한/변화 없는 상태)
“아예 시작할 수 없는 상태” (예: 시작점, queue, source 없음)
“결과가 절대 나오지 않는 상태”(BFS/DFS 후에도 남은 0 등)
이런 건 초중반에 한두 줄로 처리하는 습관이 실전에서 시간 단축에 압도적으로 유리합니다.
여기서 말하는 예외처리는 단순히 try/except, try/catch 문만을 의미하는 게 아니라, 프로그램 실행 중에 생길 수 있는 ‘특수 상황’이나 ‘극단 값을 미리 대비하고 처리하는 것’이 포함됩니다.
예시
초반에 미리 예외처리를 해두면
예외처리는 꼭 필요한 곳에, 초기에 해둘수록 코딩 실수와 디버깅 시간이 줄어든다!
개발에서는 소프트웨어 시스템 전체가 갑작스러운 충돌이나 예상치 못한 상황에도 ‘안정적으로 동작’하도록 만드는 일을 의미합니다.
예시
서버 오작동, 네트워크 끊김, 데이터 손상 등에도 시스템이 멈추지 않고 복구하거나, 사용자에게 도움말을 제공함
로그 기록/에러 알림/백업 체계 등도 폭넓게 ‘예외처리’의 범주
예외처리가 많다는 건 무조건 좋은가?
지나치게 복잡한 예외처리는 오히려 코드 품질, 유지보수성을 해칠 수 있음
하지만 "핵심적인 예외처리"만 제대로 해두면, 장애 복구와 문제 추적이 훨씬 쉬워짐
실전에서 중요성: 개발 초기부터 예상되는 주요 문제 상황들을 미리 정리해놓는 습관이, 실제 서비스 장애나 고객 클레임, 야근을 크게 줄여줌!
인생에서의 ‘예외처리’란, 예상하지 못한 실패, 변수, 위기 상황이 왔을 때 침착하게 대처하는 태도나 마음가짐을 뜻합니다.
예시
취업·입시 실패, 인간관계 악화, 질병, 갑작스러운 환경 변화 등
계획대로 일이 풀리지 않을 때, 플랜B나 새로운 목표를 세우고 다시 도전하는 행위
실수나 실패에서 교훈을 얻고 다시 일어나는 힘, 회복탄력성(Resilience)
인생에서 예외처리가 많다는 건?
인생의 예외처리는, 실패해도 다시 일어설 수 있는 여유와 대안을 늘 준비하는 일!
꼭 필요한 예외처리는 프로그램, 시스템, 인생 모두에서 ‘초반에’ 해두는 것이 결국 실패와 스트레스를 최소화하는 비법입니다!