전체 글 (125) 썸네일형 리스트형 읽기 쉬운 코드란 무엇인가? 알고리즘 스터디를 하면서 다양한 스타일의 코딩 방식을 볼 수 있었다. 다른 사람의 소스코드를 보는게 어려운 일이라는걸 알고는 있었지만 알고리즘이라는 정해진 카테고리가 있으니 구현의 틀도 비슷할거라 생각했다. 그런데 생각 외로 if문이 떡칠된 로직과 의도를 알 수 없는 변수 네이밍 등등 가독성이 떨어지는 코드를 보며, 10문제 중 1~2문제만 간신히 이해할 수 있었다. 하지만 내 코드 또한 남들에게 그렇게 보이지 않을까? 사람마다 성격이 다르듯 코딩 스타일도 다르기 때문에 익숙함의 차이가 가독성을 결정짓는 걸까? 라는 의문이 들었다. 그래서 내가 생각하는 읽기 쉬운 코드란 무엇인가에 대해 정리를 해보고 싶었다. 나는 프로그램이 하나의 문장이라고 생각한다. 프로그래밍이나 운영체제에서 Context라는 키워드.. 소수 만들기 문제의 조건에 n = 50이기 때문에 완전탐색으로 충분히 풀 수 있는 문제이다. 그런데 주의할 점은 재귀로 구현하면 시간초과가 발생한다.. 코드의 시간복잡도는 50^3 * sqrt(3000)일텐데, 어째서 시간 초과가 발생하는지는 결국 알 수 없었다. 그래서 3중for문으로 수정하였다. 재귀로 작성한 코드 더보기 #include #include #include using namespace std; #define PRIME 1 #define NOT_PRIME 2 int result = 0; vector v; int dp[3000] = { 0, }; bool IsPrime(const vector& picked) { int sum = 0; for (const auto& item : picked) sum += .. 가장 큰 정사각형 가장 단순하게 생각해 볼 수 있는 방법은 특정 좌표가 1이라면, 가능한 정사각형들을 반복문을 돌면서 하나씩 탐색해보는 방법이다. 이해를 돕기 위해 함수로 표현하면 다음과 같다. //size : 정사각형의 변의 길이 bool IsPossible(int row, int col, int size) { for(int i = row; i < row + size; i++){ for(int j = col; j < col + size; j++){ if(board[i][j] == 0){ return false; } } } return true; } 그러나 이 방법으로는 효율성 부분을 통과할 수 없었다. 두 번째 방법으로 가장 큰 정사각형을 찾는게 답이기 때문에 지금까지 계산했었던 가장 큰 변의 길이로 계산하는 방법이었다.. 이전 1 ··· 24 25 26 27 28 29 30 ··· 42 다음