오늘 TIL 3줄 요약 응집도를 높이고, 결합도를 낮추자. 이벤트는 모든 곳에 있다. 상속도 일종의 결합이다. TIL (Today I Learned) 2022.03.26 오늘 읽은 범위 5장. 구부러지거나 부러지거나 p181-p239 책에서 기억하고 싶은 내용을 써보세요. 결합도 줄이기 높은 결합도는 변경의 적이다. 결합도가 높으면 이리저리 연결되어 있어서 여러 가지를 동시에 바꿔야 하기 때문이다. 소프트웨어의 구조는 유연해야 한다. 결합도가 낮은 코드가 바꾸기 쉽다. 결합은 두 개의 코드 조각이 무언가를 공유하면 언제나 일어날 수 있다. => 내가 개발할 때, 항상 의도적으로 생각하는것이 있다. 바로 응집도를 높이고, 결합도를 낮추자인데 아니나다를까 이 책에서도 언급하고 있다. 지금보다 더 신입일 때의..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/GvndU/btrxfvUSKun/uYsCKkI0e4MdUbg493JQa0/img.png)
문제 다음 연산을 제공하는 원형 데크를 디자인하라. MyCircularDeque(k): 데크사이즈를 k로 지정하는 생성자다. insertFront() : 데크 처음에 아이템을 추가하고 성공할 경우 true를 리턴한다. insertLast() : 데크 마지막에 아이템을 추가하고 성공할 경우 true를 리턴한다. deleteFromt() : 데크 처음에 아이템을 삭제하고 성공할 경우 true를 리턴한다. deleteLast() : 데크 마지막에 아이템을 삭제하고 성공할 경우 true를 리턴한다. getFromt() : 데크츼 첫 번째 아이템을 가져온다. 데크가 비어있다면 -1을 리턴한다. getRear() : 데크의 마지막 아이템을 가져온다. 데크가 비어있다면 -1을 리턴한다. isEmpty() : 데크가 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/byIM9E/btrxcLi9aO3/ualzCpLGzNKkJjZXKbCUz1/img.png)
문제 입력 문자열은 다음 경우에 유효하다. 열린 브래킷은 동일한 유형의 브래킷으로 닫아야 합니다. 열린 브래킷은 올바른 순서로 닫아야 합니다. leetcode 20 - Valid Parentheses 코드 class Solution: def isValid(self, s: str) -> bool: stack = [] table = { ')' : '(', '}' : '{', ']' : '[', } # 스택 이용 예외 처리 및 일치 여부 판별 for char in s: if char not in table: stack.append(char) elif not stack or table[char] != stack.pop(): r..
오늘 TIL 3줄 요약 망치지 말고 멈춰라. 단정하지 말자. 적절한 곳에 예외를 사용하자. TIL (Today I Learned) 2022.03.24 오늘 읽은 범위 4장. 실용주의 편집증 책에서 기억하고 싶은 내용을 써보세요. 계약에 의한 설계 컴퓨터 시스템을 다루는 것은 어렵다. 사람 문제는 더 어렵다. 계약은 상대편은 물론 자신의 권리와 책임을 정의한다. 단순하지만 강력한 기법으로, 프로그램의 정확성을 보장하기 위해 소프트웨어 모듈들의 권리와 책임을 문서화하는 데에 초점을 맞춘다. 만약 호출자가 루틴의 모든 선행조건을 충족한다면, 해당 루틴은 종료시 모든 후행조건과 불변식이 참이 될 것을 보증해야한다. => 함수를 선언할 때, 요구사항(매개변수)을 위반하지 않고(의도하지 않은 null을 보낸다던지)..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/5uqlK/btrwVsrbUVu/ssZJR1P7Ls81Kmjv8WxKFk/img.png)
문제 스택을 이용해 다음 연살을 지원하는 큐를 구현하라. push(x): 요소 x를 큐 마지막에 삽입한다. pop(): 큐 처음에 있는 요소를 제거한다. peek(): 큐 처음에 있는 요소를 조회한다. empty(): 큐가 비어 있는지 여부를 리턴한다. leetcode 232 - Implement Queue using Stacks 코드 class MyQueue: def __init__(self): self.input = [] self.output = [] def push(self, x: int) -> None: self.input.append(x) def pop(self) -> int: self.peek() return self.output.pop() def peek(self) -> int: # outp..
오늘 TIL 3줄 요약 우리는 지식을 설계와 구현, 테스트, 문서로 표현한다. 비난 대신 문제를 해결하라. 그 놈의 오류 메시지 좀 읽어라 TIL (Today I Learned) 2022.03.23 오늘 읽은 범위 3.장 기본 도구 p103-p144 책에서 기억하고 싶은 내용을 써보세요. 실용주의 프로그래머로서 우리의 기본 재로는 나무나 쇠가 아니라 지식이다. 우리가 수집하는 요구 사항은 지식이고, 우리는 그 지식을 설계와 구현, 테스트, 문서로 표현한다. 일반 텍스트를 사용하면 수작업으로든 프로그램으로든 동원 가능한 거의 모든 도구로 지식을 다룰 수 있게 된다. 일반 텍스트는 인쇄 가능한 문자로 이루어지고, 정보를 전달하기에 적합한 형식을 갖추어야 한다. 일반 텍스트라면 데이터 그 자체만으로 의미가 드..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bFvo7J/btrwLhK9T3r/Hq46VjWqku7X0XDHptSuR0/img.png)
문제 스택을 이용해 다음 연산을 지원하는 큐를 구현하라. push(x) : 요소 x를 큐 마지막에 삽입한다. pop() : 큐 처음에 있는 요소를 제거한다. peek() : 큐 처음에 있는 요소를 조회한다. empty() ; 큐가 비어 있는지 여부를 리턴한다. leetcode 225 - Implement Stack using Queues 코드 class MyStack: def __init__(self): self.q = collections.deque() def push(self, x: int) -> None: self.q.append(x) # 요소 삽입 후 맨 앞에 두는 상태로 재정렬 # popleft : pop(0)과 같지만, O(1)의 시간복잡도를 가짐 // pop(0)은 O(n) # 1,2,3,4..
Mission : 다른 사람이 작성한 TIL 3개를 선정하고, 그 이유와 소감을 작성하기. nlom0218님 이유 : "Topic 9 DRY: 중복의 해악"을 요약하신 부분이 상당히 공감되어, 혹시 TIL를 작성하실 때, 저와 같은 마음으로 정리하신건 아닐까하는 생각에 선정하게 되었습니다. vora128님 이유 : 저도 2장을 읽으면서 "Topic. 14 도메인 언어"를 이해하는데 상당히 힘겨웠습니다. vora128님이 작성하신 소감에서도 그 부분이 어렵다고 명시하시면서 다시 읽어보겠다라고 하셨습니다. 저 역시 그 부분을 이해하려고 다시 읽은 기억이 떠올라 선정하게 되었습니다. jaeyoung0909님 이유 : 책을 처음 읽을 때, "프로토타입은 이거고, 예광탄은 이거야! 그래서 둘의 차이는 이거라구!"..
오늘 TIL 3줄 요약 중복 코드는 악이다. 바꾸기 쉬운 코드를 작성하자. 직교성을 가진 코드를 작성하자. TIL (Today I Learned) 2022.03.20 오늘 읽은 범위 2장 실용주의 접근법 p37 - p71 책에서 기억하고 싶은 내용을 써보세요. 좋은 설계의 핵심 좋은 설계는 나쁜 설계보다 바꾸기 쉽다. 바꾸기 더 쉽게 (Easier to Change) 단일 책임 원칙이 유용한가? 요구 사항이 바뀌더라도 모듈 하나만 바꿔서 반영할 수 있기 때문이다. 이름이 좋으면 코드가 읽기 쉬워지고, 코드를 바꾸려면 코드를 읽어야 하기 때문이다. => 프로그래밍을 하다보면 변하는 요구사항에 맞춰 기존의 설계를 다시 바꿔야 하거나, 추가하는 것만으로 끝나는 경우가 있다. 이런 상황에 대응하기 위해 설계나 ..
- Total
- Today
- Yesterday
- 노마드
- MySQL
- 릿코드
- 스프링
- 코틀린
- 스프링 부트
- Spring
- 알고리즘
- 정렬
- 코테
- Real MySQL
- 그리디
- 김영한
- Algorithm
- 북클럽
- 문자열
- 데이터베이스
- leetcode
- kotlin
- 백준
- 스프링부트
- 인프런
- 노마드코더
- 구현
- spring boot
- mysql 8.0
- 자료구조
- webflux
- 파이썬
- 리팩토링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |