분류 전체보기
3. [Clean Code] 함수
위 사진은 우아한 테크코스에서 교육생들에게 내주는 과제의 조건이다. 사실 1주차 내용이기에 간단하지만 주차가 진행되면서 더 어려운 조건을 부여 받아서 진행하는 것 같다. www.youtube.com/watch?v=bIeqAlmNRrA&t=1369s 그러면 과연 함수를 작성할 때 어떻게 작성해야 클린코드인건지 ... 책에서는 말하는 내용은 다음과 같다. 1. 작게 만들어라 함수가 길어지면 길어질수록 이해하기 힘들어진다, 그러니 짧게 만들라는 말이다. 짧게 만드는 방법은 여러가지일것이다. 테크코스처럼 intent를 최소화하고 else 문 대신 메서드를 분리해서 return을 사용하는 방식 심지어 책에서는 if문/else문, while문 등에 들어가는 블록을 한줄로 만들어야한다고 이야기한다. 2. 한 가지만 ..
Greedy Algorithms(탐욕법, 탐욕 알고리즘)
그리디 알고리즘 이란 Greedy Algorithm은 문제를 해결하는 과정에서 그 순간순간마다 최적이라고 생각되는 결정을 하는 방식으로 진행하여 최종 해답에 도달하는 문제 해결 방식이다. 순간 순간마다의 최선의 결정이 전체 문제에서 최선의 해결책이 되지 않을 수 있다. 하지만 이러한 단점들을 극복하는 Greedy의 가장 큰 장점은 계산 속도에 있다. 그래서 Greedy 방법이 통하는 몇몇의 문제에서는 최적해를 빠르게 산출해낼 수 있다. 그리디 알고리즘 예제 모험가 길드 문제 모험가 길드장인 동빈이는 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있도록 규정했다. N명의 모험가에 대한 정보가 주어졌을때, 여행을 떠날 수 있는 그..
프로그래머스 - 짝지어 제거하기 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 스택을 이용하면 O(N) 시간복잡도로 풀수있어서 효율성까지 통과할 수 있는 문제 스택을 써야지라는 생각을 해내는게 이 문제의 핵심이다. 비어 있거나 스택 맨 위 값과 같지 않은 경우는 추가 비어 있지 않고 스택 맨 위 값과 같은 경우는 맨 위 값을 pop baabaa를 처리할때 stack의 상태를 보면 [b] -> [b a] -> [b] -> [] -> [a] -..
2. [Clean Code] 의미 있는 이름
제 이름은 쇠북 종, 민첩할 민입니다. 쇠북 종은 종소리를 의미하기에 좋은 소식을 민첩하게 전하는 역할을 의미해서 지도자가 되라는 의미가 있다고 합니다. 이처럼 사람에 이름에는 한자 만 알면 풀이가 가능한 의도가 있습니다. 프로그래머는 함수, 인수, 클래스, 패키지, 소스 파일, 디렉토리 등에 대해서 수 많은 이름을 지어준다. 이 이름을 통해서 우리는 정보를 유추해내죠. 그렇기에 의미 있는 이름은 매우 중요합니다. 이책에 서 말하는 의미 있는 이름을 짓는 방법보면 1. 의도를 분명히 밝혀라 int d // 경과 시간 int daysSinceCreation; 사실 위의 예시 만으로 무슨 말을 하고싶어 하는지 알거 같다. 이름을 보고 의도를 파악할 수 있게 하라는 말로 이는 모든 이름에 적용되어야 한다. p..
1. [Clean Code] 깨끗한 코드
(저의 개인적인 의견과 감상 그리고 약간의 책의 내용?을 마음대로 적어논 글입니다. 가볍게 보시길 소망합니다.ㅠㅠ) 첫번째 주제인 깨끗한 코드는 깨끗한 코드에 대한 책임과 많은 전문가들의 정의를 설명하며 자연스럽게 책임감과 호기심을 불러 일으킨다. 깨끗한 코드에 대한 책임은 프로그래머의 책임이다. 바쁜 일정에 치여서 쓰레기 코드를 작성하고 다음에 정리해야지 한적이 많았는데 이책에서 이렇게 말한다. 나중은 결코 오지 않는다고...... 결코는 모르겠지만 자주 오지않는 것에 공감한다. 아마도 현재 코드를 잘짜라는 말이겠지 하며 이해했다. "관리자와 마케팅은 약속과 공약을 내걸며 우리에게 정보를 구한다." "우리에게 정보를 구하지 않더라도 우리가 적극적으로 정보를 제공해야 마땅하다." "사용자는 요구사항을 내..
Clean Code 책 정리 시작
이번에 Clean Code 책을 구매하여서 책을 읽으면서 이를 정리하기 위해서 카테고리를 만들었습니다. 이 카테고리는 책을 읽어가면서 기억해야겠다고 생각하는 내용을 정리하고 실습하는 형태로 이루어 갈 생각입니다 .ㅎ 대략 530페이지 정도 인거 같으니 하루에 대략 100쪽씩... 읽고 정리 ...
프로그래머스 - 방문 길이 문제 (자바)
programmers.co.kr/learn/courses/30/lessons/49994?language=java 코딩테스트 연습 - 방문 길이 programmers.co.kr 문제 해결 포인트는 A지점 -> B지점이면 B -> A가 이미 가본길이라는 것이다. 그래서 A -> B로 처음 갈때 count + 1을하고 A->B와 B->A 두 경우를 방문처리한다. 이를 위해서 visited[][][][] 와 같은 boolean 배열을 사용하였다. 배열에 음수를 사용할수 없으니 전체 좌표를 0부터 10까지를 잡고 시작점을 5,5로 잡았다. class Position { private int x; private int y; public Position(int x, int y) { this.x = x; this.y ..
IOC & DI
IoC (Inversion of Control) 제어의 역전이라고 불리운다. 제어권이 역전 되었다는 뜻이다. 예전에는 의존관계의 제어를 개발자가 직접 해주었다. 그러나 제어권이 컨테이너로 넘어갔고 객체의 생성부터 생명주기의 관리까지 객체에 대한 제어권이 바뀐것을 IoC라고 한다. IoC 컨테이너란 ? 핵심 Interface : BeanFactory Application Component 중앙 저장소 POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가짐 Bean 설정 소스로부터 빈 정의를 읽어들여 빈을 구성하고 제공하는 역할을 한다. Spring IoC 컨테이너 ApplicationContext 인터페이스를 구현한 클래스의 오브젝트 Application Context는 BeanFactory에 여러가..