알고리즘 공부 수기 4

[디버깅] 화내지 않고 체계적으로 디버깅 하는 방법

프로그래밍을 하다보면 성격이 나빠지는걸 경험할수 있습니다. 내가 이렇게 포기가 빠른 인간이었는지 새삼 절망스럽기 도 하구요. 저와 같은 분들을 위해 제가 오류에 맞서는 방법을 소개해 드리려고 합니다. 다른 좋은 방법이 있는 분들이 계시다면 자유롭게 의견 주시면 감사하겠습니다 :). 1. 어디서 오류가 났는지부터 찾는다. 이것만 잘 찾아도 절반은 해결했다고 봐도 된다. F9(중단지 표기), F10(함수에 들어가지 않고 한줄씩 실행), F11(함수에 들어가서 한줄씩 실행)를 이용해서 정확하게 찾아낸다. 2. 변수의 값 확인해보기 오류가 날 가능성이 있는 변수들을 출력해본다. 중간에 runtime error가 발생하더라도 오류가 난 지점까지의 변수 값이 출력되기 때문에 변수의 어떤 부분이 잘못되었는지 알 수 ..

2021 카카오 블라인드 코딩테스트 후기

어제 카카오 블라인드 코딩테스트가 있었다. 물론 내 수준에서 다 풀지 못할것을 알고있었기 때문에 가벼운 마음으로 대회에 임했다. 내가 손댈수 있었던 문제는 유사 아이디 추천, 코스요리 정하기, 채용 알고리즘 작성하기 (3번째까지)였다. 첫번째 문제는 문제에서 주어진대로 그대로 따라하기만 하면 풀수있을 정도로 그다지 어렵지 않았고, 두번째 문제는 이전에 알고리즘 공부를 하면서 봤던 유형의 문제라 unordered map이랑 dfs를 사용해서 풀었다. 세번째 문제에서는 분명 주어진 테스트세트에서는 잘 동작하는데 코드를 제출하면 틀렸다고 나와서 솔직히 아직도 뭐가 잘못되었는지 모르겠다. 나중에 해설이 나오면 다시 봐야겠다. 어쨌든 꽤나 긴 시간을 테스트를 치면서 느낀점이 있다면, 나도 할수 있을것 같은데?! ..

백준 2580: 스도쿠 문제해결 (C++)

이 문제는 빈칸마다 1-9까지 넣어보되, 불필요하다고 생각되는 숫자는 넣지않는 백트랙킹 방식으로 푸는 문제였다. N-Queen문제와 유사했던 것이다. 2차원 배열의 갯수만큼 재귀를 수행하면서 다음과 같은 방식으로 재귀를 수행한다. 0을 만난 경우 1-9까지의 수 중에 후보가 될수있는 수들을 하나씩 넣어보고 0이 아닌 수를 만난 경우 그냥 재귀를 수행한다. 이미 배열에 수가 채워진 경우 가능한 수라는 것이 없다(값이 이미 있으므로). 이때 가능한 수를 찾는 방법은 다음과 같다. 가로열에 이미 존재하는 숫자 제외 세로열에 이미 존재하는 숫자 제외 3*3박스 안에 이미 존재하는 수는 제외 이런 숫자들을 제외하고 남은 숫자들만 하나씩 넣어보는 것이다. 바닥 조건은 9*9배열을 모두 탐색한 경우로 한다. 즉, 배..

2020-0819 "백준 2580번: 스도쿠"를 풀며

알고리즘 문제를 해결한다는건 정말 생각보다 쉽지 않은 일이다. 내가 선택한 방법이 완전히 틀린 방법이어서 처음부터 다시 시작해야 할 때도 있다. 알고리즘은 내가 예상했던것 보다 수학적 사고력을 많이 요하는 분야인것 같다. 수학적 사고력이란 뭘까? 어릴적에는 단순히 재능이라고 생각했다. 수능 문제를 30분만에 두번이나 풀고 자는 친구들을 보면서 많이 좌절했던것 같다. 그치만 지금은 수학적 사고력이란 체력과 인내심, 그리고 나에 대한 관용이라고 생각한다. 솔직히 어릴적에는 나는 안된다는 생각에 사로잡혀있기도 했고, 문제가 안풀렸을때 그 좌절감을 견디지 못했다. 그래서 결국 풀이방법을 많이 외우다시피하면서 억지로 억지로 공부했었다. 지금의 나는 드디어 내가 공부하고자 하는 분야를 만났고, 나의 전공을 정말 사..

반응형