목차 산술 오버플로 산술 오버플로는 코딩을 하면서 정말 흔하게 접할 수 있는 오류이다. (특히 C++, C에서 말이다. JAVA는 내가 안써봤고. 나머지 언어에서는 경험을 해본적이 없다.) 왜 산술 오버플로라는 오류는 흔하게 발생할까? 첫째로, 프로그램 언어는 따로 오버플로를 경고하지 않는다. 둘째로, 알고리즘을 확인하는 과정에서 논리에 집중하다 보면, 산술 오버플로를 신경쓰지 못하고 지나칠 수 있다. 그럼 산술오버플로의 사례를 살펴보자. 산술 오버플로의 사례 너무 큰 결과 C, C++, JAVA등 숫자 자료형이 크기가 제한 되어 있는 경우, 어떤 문제를 푼 결과값이 자료형의 한계를 넘어설 때 이 오류가 발생한다. 흔히 32비트 자료형을 습관적으로 사용하다가, 결과가 32비트 자료형을 넘는것을 인식하지 ..
목차 코딩하면서 자주 하는 실수들. 코딩을 하다보면 정말 정말 정말 많은 실수가 생긴다. 이런 실수들을 조금이나마 줄이고, 발생했을 때도 빨리 알아차리면 좋겠다. 배열 index 접근 오류 정말 코딩하면서 제일 많이 발생하는 오류가 아닐까 싶다. 접근하려는 인덱스가 존재하지 않아서, 멈추고, 오류가 발생한다. 오류가 발생하면 괜찮지만, int arr[10]; int arr2[10]; 정말 만의 하나의 경우로 이 배열 두개의 메모리가 이어진 상태로 만들어져서 오류가 발생하지 않으면 정말 큰일이다. 오류인지도 모르고 작성하다가, 한참 뒤에 뭐가 문젠지 하나하나 찾아가야한다. 정말 화가 나는 경우다. 이 실수, 오류를 막는 법! 대공개!! 바로 이걸 안나게 코드를 짜면 된다. 뭐 우쩌겠나. 배열에 접근할 때 ..
목차 코딩은 언제나 문제해결전략, 자료구조, 알고리즘등은 어떤 문제에서 쓰인다. 하지만 코딩은 언제나 쓰인다. 문제해결전략을 이용해서 해결하고 검증까지 했는데. 막상 코딩을 구현을 못한다면 아무런 의미가 없는 행동들이 된다. 이 코딩은 무얼해도 우리에겐 사실 제일 중요한 것이다. 언제나 읽기 쉽게, 짧게 알고리즘을 구현하고, 코딩을 하다보면 오류가 분명 나타난다. 그래서 디버깅을 하려고 보니, 간단한 기능임에도 코드가 1000줄이 넘어가고 변수와 함수, 클래스명을 제대로 알아볼수조차 없다면. 디버깅을 하는 내내 고통스럽고, 끝내 고치지 못해 다시 새로짜거나, 문제해결이 실패 해버릴수도 있다. 그래서 우린 항상 코드를 짧고, 간결하게, 읽기 쉽게 짜야한다. 나뿐만이 아니라, 협업을 하는 사람도 보기 쉽게 ..
목차 문제를 해결하는 방법은 두가지가 있다. 직관 체계적 접근 직관은 그 말대로 문제를 보고 바로 어떻게 풀어야 할지 예상이 가는것이다. 물론 당연히 이건 쉽지 않다. 사실 이게 된다면 이렇게 포스트를 쓰고 있지 않을거니까. 체계적 접근은 여러가지 방법을 통해 하나하나 문제를 해결해나가는 것이다. 이 포스트를 쓰고있는 이유 중 큰 비중을 차지한다고 생각하는 것. 하나하나 전략들을 소개해보겠다. 체계적 접근 비슷한 문제를 해결한 적이 있나? 예전에 비슷한 문제를 해결 한 적이 있다면, 그 문제를 참고해서 문제를 해결해 나가면 될 것이다. 하지만, 비슷한 문제를 해결해 봤다고 그 문제가 같은 건 아니다. 비슷하다고 생각해도 아예 다른 방식의 해결방법이 존재 할 수도 있다. 그러니 문제를 제대로 분류하고, 어..