본문 바로가기

전체 글34

[Algorithm] 재귀함수와 반복문 https://github.com/1000zoo/data-engineering-dev-course/blob/main/week1/day1.ipynb재귀함수하나의 함수에서 자기 자신을 다시 호출하여 작업을 수행하는 것모든 재귀알고리즘은 반복문으로도 구현 가능하다Recursive vs Iterative둘 다 시간 복잡도는 같다.다만, 재귀의 경우, n이 커질 수록 함수 호출이 많아져, 효율은 떨어질 수 있다.Recursive의 장점은, 사람 관점에서 코드가 간결해보이고 구현하기 쉽다는 점이다.좀 더 직관적이다.피보나치 수열 예제Iterativedef iterative(x): if x 변수가 여러개 필요하여 간결해보이진 않는다.하지만 효율성 측면에서는 Recursive 방식보다는 좋다.Recursivede.. 2024. 3. 25.
[Obsidian] 플러그인을 개발해보자 토이 프로젝트로 옵시디언이라는 마크다운 편집기 프로그램 플러그인을 개발해 보았다. 자바스크립이나 타입스크립은 처음이라 해맸던 부분들이 많았어서 개발 방법 및 순서를 정리해 보려 한다. 사전 준비 시작 전, 아래의 내용들이 설치되어있어야 한다. Obsidian 디버깅을 위해 필요 Git 배포를 위해 필요 Node.js 사용되는 언어 VS Code 편집기 Step 1 샘플 다운로드 우선 디버깅용 Vault를 만들어준다. 그리고 터미널을 열어 {Vault 경로}/.obsidian/plugins 으로 이동한다. 만약 plugins 디렉토리가 없다면, 만들어주면 된다. cd {Valut 경로}/.obsidian/plugins // plugins가 없을 경우 mkdir {Valut 경로}/.obsidian/plug.. 2024. 3. 15.
[Java] 객체지향 생활체조 (Object Calishenics) Object Calisthenics Jeff Bay 라는 사람이 ThoughtWorks Anthology 라는 공학 에세이 모음집에서 등장한 개념이라 한다. 객체지향 프로그래밍을 잘하기 위한 9가지 체크리스트라 보면 될듯 하다. 1. One level of indentation per method 한 메서드에 오직 한 단계의 들여쓰기만 한다. Why? 메소드에 들여쓰기가 많아지면 가독성이 떨어진다. 객체지향의 사상 중, 하나의 메소드는 한 가지 기능만 담당한다를 위반할 수 있다. example ❌ String board() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) .. 2023. 10. 25.
[Java] Enum 활용하기 Enum 특정 값들만을 가질 수 있는 타입을 정의할 때 사용된다. 예를 들어, HTTP code의 경우, 각 코드들과 의미가 일대일로 대응되고, 종류가 정해져있으므로, 이를 enum으로 정의할 수 있다. 이렇게 해 두면, 이 타입의 변수는 정의된 값들 중 하나만을 가질 수 있게 되어 코드를 더 안전하게 만들 수 있다. 또한, 자체적으로 클래스이므로, 메소드나 필드를 가질 수 있어 상수를 정의할 때도 사용할 수 있다. ex // enum 정의 public enum Status { OK(200, "요청 성공"), MULTIPLE_CHOICE(300, "하나 이상의 응답 가능"), BAD_REQUEST(400, "서버가 요청을 이해할 수 없음"), NOT_FOUND(404, "요청받은 리소스를 찾을 수 없음".. 2023. 10. 24.