전체 글 277

알고리즘 3줄 정리 [DP : Memoization, ]

Dynamic Programming - Memoization 정리 핵심개념 피보나치 수열의 동적 프로그래밍과 메모이제이션 방식의 핵심은 중복 계산을 방지하기 위해 캐시를 사용하여 이미 계산된 값을 저장하고 재사용함으로써, 재귀 호출의 효율성을 높이고 시간 복잡도를 지수적인 O(2^n) 에서 선형적인 O(n)으로 줄이는 데에 있습니다. 기저 사례를 적절히 처리하여 재귀 호출의 종료 조건을 제공하며, 이를 통해 계산 속도를 크게 향상시킵니다.

알고리즘 3줄 정리 [합병정렬, 퀵정렬]

Divid and Conquer 의 형제 합병정렬 정리 핵심개념: 리스트를 반으로 나누고, 각 부분을 재귀적으로 정렬한 다음, 두 부분을 합병합니다. 시간복잡도: 최선, 평균, 최악 모두 O(nlogn) → + : 일관된 시간복잡도 공간복잡도: O(n) (추가 배열을 사용하기 때문에) → - : 추가 메모리 필요 퀵정렬 정리 핵심개념: 피벗을 선택하여 이보다 작은 요소와 큰 요소를 분할한 후(파티션), 각 부분을 재귀적으로 정렬합니다. 시간복잡도: 평균 O(nlogn), 최악 O(n2) (피벗 선택에 따라 달라짐) → + 평균적으로 빠름, 최악 크게 증가 공간복잡도: 평균 O(logn) (재귀의 깊이), 최악의 경우 O(n) (피벗 선택이 최악일 때) → + 추가 메모리 적게 소모 이름이 퀵정렬인 이유 ..

이직 회고 : 신입공채 최종면접 불합격 하고 나서

I. 들어가며 금번 HR솔루션을 필두로 하는 기업공채 최종면접에서 불합격하였다. HR관련 나의 관심과 지식은 어느정도 합격을 기대했다. 하지만 결과는 그렇지 않았다. 합격 후 내 모습에 기대가 없었다면 상실감도 없었겠지만, 기대가 있었기에 제법 충격은 상당했다. 또한 본 채용과정을 밟아가며 기회비용을 생각해도 마음은 편치않다. 금번 불합격 발표는 마치 예전에 오랜기간 준비했던 시험을 불합격했던 날의 기억을 생생하게 느끼게 해주었다. 차후에 한번 더 이러한 시간과 비용을 사용한다면, 아깝지 않은 결과로 만들기 위해서 회고한다. II. 면접 전형 회고 1. Liked : 좋았던 점은 무엇인가? 6월부터 공부하며 획득한 자격증은 지원서 작성에 요긴하게 쓰였다. 정보처리기사와 HRM전문가 두개는 지원서를 작성할..

[FiveLinesOfCode] 6장: 유사한 코드 융합하기

6장 데이터 보호 의문점 학습목표 ‘getter와 setter를 사용하지 말것’ 으로 캡슐화 강제하기란? ‘getter와 setter 제거하기’ 로 getter제거하기란? ‘공통 접사를 사용하지말것’을 위한 ‘데이터 캡슐화’ 사용이란? ‘순서 강제화’로 불변속성제거란? 키워드 6.1 getter없이 캡슐화 하기 정의 Boolean 이 아닌 필드에 getter나 setter 사용하지 말것 즉 직접할당하거나 반환하는 메서드를 의미함 getter 존재시 캡슐화를 해제하고 불변속성을 전역적으로 만듬 객체 반환 후 반환받은 곳은 객체를 다른곳어 더 전달이 가능하고 이것은 제어 불가능 setter 존재시 setter수정시 시그니처 유지할 수있는 또 다른 간접적 레이어 도입할 수있음 실제로는 setter를 통한 새로..

[FiveLinesOfCode] 5장 유사한 코드 융합하기

5장 유사한 코드 융합하기 의문점 성능 최적화는 프로파일링 도구 사용해서 가이드 해야함 (p.112) 인터페이스는 사용구의 일반적인 원입니다. 학습목표 유사 클래스 통합하기란? 조건부 산술로 구조 노출하기란? 간단한 UML 클래스 다이어그램 이해하기란? ‘전략 패턴 도입’으로 유사코드 도입하기란? ‘구현체가 하나뿐인 인터페이스 만들지 말것’으로 어지러움 정리하기 키워드 1. 유사한 클래스 통합하기 5.1 개요 updateTile() 은 우선 else 사용금지 규칙 위반함 → 첫번째 단계로 || 에 대해서 하나의 함수로 도입해야함 // Stone FallingStone의 유일한 차이점 2개 class Stone implements Tile { isAir() { return false; } isStone()..

[FiveLinesOfCode] 4장 타입코드 처리하기

4장 : 타입코드 처리하기 의문점 enum 을 클래스로 굳이 다 나눠야함? → 복잡도에 따라서 선택! 대출부분 학습목표 if 문에서 else를 사용하지말것과 switch문을 사용하지 말것으로 ‘이른 바인딩’ 제거란? ‘클래스로 타입 코드 대체’, 그리고 ‘클래스로의 코드 이관’으로 if 문 제거하기란? ‘메서드 전문화’로 문제가 있는 일반성 제거하기란? ‘인터페이스에서만 상속’받을 것으로 코드 간 커플링(결합) 방지하기 ‘메서드의 인라인화’ 및 ‘삭제 후 컴파일하기’를 통한 불필요한 메서드 제거 키워드 1. 간단한 if문 리팩터링 4.1 규칙 : if문에서 else를 사용하지 말것 정의 프로그램에서 인식 하지 못하는 타입인지를 검사하지 않는 한, if문에서 else사용하지 말것 if-else 를 사용하면..

[FiveLinesOfCode] 3장 : 긴 코드 조각내기

3장 : 긴 코드 조각내기 의문점 불변속성(invariant), 가정설정문(assertion) 디자인패턴 → 상속보다는 컴포지션, 컴포지션이 컴파일 오류 발생 만듬? 학습목표 다섯줄 제한(FIVE LINES)으로 지나치게 긴 메서드 식별하기란? 세부사항을 보지 않고 코드 작업하기란? 메서드 추출(EXTRACT METHOD)로 긴 메소드 분해하기란? 호출 또는 전달, 한가지만할것(EITHER CALL OR PASS)으로 추상화 수준에 맞추기란? if 문은 함수의 시작에만 배치로 if문 분리하기란? 키워드 DRY, KISS 지침을 따른경우라도 코드는 여전히 혼란스러움 1. 다섯줄 제한(FIVE LINES)으로 지나치게 긴 메서드 식별하기란? 정의 {} 제외 if, for, while, 세미콜론끝나는 모든것은..

[FiveLinesOfCode] 2장 : 리팩터링 깊게 들여다보기

2장 : 리팩터링 깊게 들여다보기 의문점 - 불변속성(invariant), 가정설정문(assertion) - 불변속성? - 객체가 정상적으로 작동하기 위해 값, 식, 상태의 일관성 보장하기위해 항상 참이 되기 위한 조건 - 기름양은 0 ≤ oil ≤ 100 사이여야만 함 - 이 범위를 벗어나면 안되는 조건을 불변속성이라 함 - - 디자인패턴 → 상속보다는 컴포지션 학습목표 가독성을 통한 의도 전달이란? 유지보수성 개선을 위한 불변속성(invariant) 지역화란? 개발속도 향상을 위한, 추가(addition)를 통해 변경가능하게 만들기란? 리팩터링의 일상 업무화란? 키워드 1. 가독성을 통한 의도 전달이란? 2. 유지보수성 개선을 위한 불변속성(invariant) 지역화란? - 가독성 및 유지보수성 향상..

[FiveLinesOfCode] 1장 : 리팩터링, 리팩터링 하기

1장 : 리팩터링 리팩터링 하기 의문점 XP에서 스파이크 시작전 핵심기능 간단구현 레드 - 그린 - 리팩터 반복 TDD 를 처리를 기술한 방법 자동화된 테스트 학습목표 리팩토링의 구성요소는? 일상 업무에 리팩토링 도입이란? 리팩토링에 있어 안전의 중요성이란? 키워드 리팩토링의 구성요소는 스킬,문화,도구 로 구성되어있다 제반 정의 좋은 코드? : 사람이 읽기 쉽고, 유지보수가 용이하며, 의도한대로 잘 작동하는 코드 리팩토링? : 기능을 변경하지않고, 코드의 가독성과 유지보수가 쉽도록 코드를 변경하는것 리팩토링의 이유 가독성 높이면 → 기능구현 시간 확보 (경제성) 유지보수가 용이 → 버그가 줄어들고 수정이 쉬워짐 생각하기 편하다 → 한번에 많은 것을 기억해야할수록 지침, 스킬 : 무엇을 리팩토링 할 것인가..

NginX의 필요성과 속성

I. 들어가며1)Nginx를 공부하는 이유는 저마다 다양하다. 나에게 Nginx는 지난 몇달간 나에게 해결하지못한 숙제이다.Nginx를 피하는 것은 내 회사생활을 해태한다고 간주될 정도로 회사에서 쓰임이 자주있었고, 이는 곧 퇴근 후 공부하게끔 추동했다. 구체적으로 어떻게 쓰임이 있었냐하면... 현재 재직중인 회사 입사 시험은 Nginx & clojure 이고, 입사 후 맡아서 완료한 회사 홈페이지 리뉴얼 업무를 할 때에도 Nginx를 쓰였고, 내가 맡은 핀테크 서비스도 마찬가지로 NginX가 쓰이고 있다. 2)이렇게 쓰이지만 나는 여전히 Nginx를 쓰는 이유를 공감하지 못하고 있었고, 그 방법도 모른채 Nginx 사용을 피하는 나자신을 조우했다. 가볍게 시작했고, 나와 같은 사람을 위해서 가볍게 정리..