2024/01/16 6
-
3.3 코드 분할 코드 분할(decomposition)은 큰 덩어리의 코드를 작은 덩어리로 쪼개는 것이다. 함수 하나하나가수백라인씩 되고, 블록이 몇 중으로 겹쳐진 코드는 코드를 봐야하는 사람을 낭패스럽게 한다. 이상적으로는 함수 하나가 한가지 작업만 해야 한다. 복잡도를 심각하게 높이는 다른 부가 작업은 별도의 함수로 분리되어야 한다. 예를들어, 누군가 이 함수가 하는일이 물었을 때, 먼저 A를 하고, B를 한 후 C면 D를 하고, 아니면 D를 한다 라고 답했다면, A, B, C, D를 별도의 메서드로 분리해야하는 것이 바람직 하낟. 코드 분할은 이론적으로 잘 정립된 개념은 아니다. 어떤 프로그래머는 종이로 출력했을 때 함수 크기가 한쪽 이내여야 한다고 주장할 수도 있다. 또 다른 경험 법칙은 코드의 ..
-
3.2.2 주석 작성 스타일 어느 조직이든, 그 조직만의 주석 작성 방식이 있을 수 있다. 어떤 환경에서는 코드에 대한 공통적인 문서 표준으로서 특정 스타일의 주석을 강제하기도 한다. 어떤곳 에서는 주석의 스타일과 양을 전적으로 프로그래머 재량에 맡긴다. 3.2.2.1 모든 라인마다 주석 달기 충분한 문서화를 위해 소스 코드의 모든 라인마다 주석을 달 수도 있다. 모든 라인마다 주석을 달게 되면, 아무런 이유 없이 작성되는 코드를 피할 수 있다. 하지만, 대규모 프로젝트에 적용하기에는 무리가 있고, 코드가 지저분해지는 문제가 발생한다. int result;// 결과를 저장하기 위해 int 변수 선언 result = doodad.getResult(); // doodad의 결과 얻기 if ( result %..
-
3.2 코드의 문서화 프로그래밍에서 문서화라 함은 보통 소스 코드 안에 작성된 주석을 의미한다. 주석은 코드를 작성할 때 코드가 어떤 일을 수행하는지 머릿속에 있는 것을 밖으로 표현할 좋은 기회이다. 주석은 어떤 내용이든 담을 수 있다. 단, 코드 자체에서 당연히 알 수 있는 내용은 피하는것 이 좋다. 3.2.1 주석을 작성해야 하는 이유 주석을 작성해야 하는 이유는 자명하다. 그러나, 내가 작성하는 코드에 주석이 필요한 이유가 무엇인지 생각해보자. 어떤 경우네는 주석이 왜 중요한지 완전히 이해하지 못한 상태에서도 프로그래머 스스로 주석의 필요성을 꺠닫기도 한다. 3.2.1.1 사용법을 설명하기 위한 주석 주석을 사용하는 한 가지 이유는, 사용자가 그 코드와 어떻게 연동할 수 있는지 설명하기 위해서다. ..
-
문제 설명 n명이 입국심사를 위해 줄을 서서 기다리고 있다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다르다. 처음에 모든 심사대는 비어있다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있다. 모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고자 한다. 입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 매개변수로 주어질 때, 모든 사람이 심사를 받는데 걸리는 시간의 최솟값을 return 하도록 solution 함수를 작성하시오. 제한사항 입국심사를 기다리는 사람은 1명..
-
이번에는 객체의 회전을 애니메이션에 반영하고 카메라를 상하도 같이 회전시키게 해보자. 카메라 회전 전에 만들어 놓았던 BP_Player에 들어가서, Character Movement를 누른다음, 디테일 창으로 가보자. 그곳에서, 캐릭터 무브먼트를 확인하면 다음과 같은 부분을 확인할 수 있다. 무브먼트의 회전방향에 대해 Orient 의 Rotation을 참고하여, 그 방향쪽으로 Animation을 회전시킬수 있게 설정할 수 있다. 해당 박스를 체크한다. 만약, 에니메이션 회전을 적용하지 않고, 카메라를 회전시키고 싶다면, BP_Player의 Self를 클릭하고, 그곳에서 폰->UseController Rotation부분에서 회전을 원하는 부분을 체크하면 된다. 카메라 줌 조정 이번에는 카메라의 줌을 조정할..
-
문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 한다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성하라. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하 각 숫자는 1 이상 50 이하인 자연수 타겟 넘버는 1 이상 1000 이하인 자연수 입출력..