개발/북TIL

    파이썬 알고리즘 인터뷰 23장 다이나믹 프로그래밍(DP)

    오늘 TIL 3줄 요약 최적 부분 구조 - 문제의 최적 해결방법이 부분 문제에 대한 최적 해결 방법으로 구성되는 경우의 문제 DP 알고리즘을 이용하면 최적 부분 구조를 갖고있는 문제를 풀이할 수 있다. 최적 부분 구조를 푸는 또 다른 알고리즘으로는 그리디 알고리즘이 있다. 그리디는 그 순간에 최적이라 생각하는 것을 선택하며 풀이 DP는 중복된 하위 문제들의 결과를 저장해뒀다가 풀이해 나간다. 중복되지 않은 문제들은 DP로 풀지 않고 병합정렬, 퀵 정렬 등을 이용해 분할정복으로 풀어나간다. 다익스트라 알고리즘은 최적 부분 구조, 중복된 하위 문제들, 탐욕 선택 속성을 모두 갖는 알고리즘이다. TIL (Today I Learned) 날짜 2020 11. 12. FRI 오늘 읽은 범위 파이썬 알고리즘 인터뷰 ..

    파이썬 알고리즘 인터뷰 9, 10, 11장 - 스택, 큐, 데크, 우선순위 큐, 해시 테이블

    오늘 TIL 3줄 요약 스택은 거의 모든 APP을 만들때 사용되는 자료구조로서, 스택과 연관된 알고리즘을 제대로 이해하느냐 못 하느냐에 따라서 기본 알고리즘을 설계할 수 있느냐 없느냐가 결정되기도 한다. FIFO로 처리되는 큐는 BFS, 캐시 등을 구현할 때 널리 사용된다. 데크나 우선순위 큐 같은 변형들도 유용하다. 성능을 위해 파이썬에서는 데크를 사용하는 것이 가장 좋다. 파이썬에서는 대부분의 우선순위 큐 풀이에 heaqpq 모듈을 사용한다. TIL (Today I Learned) 날짜 d2022 10. 24. ~ 2022. 11.07 오늘 읽은 범위 파이썬 알고리즘 인터뷰 9장 스택, 큐, 10장 데크, 우선순위 큐, 11장 해시 테이블 책에서 기억하고 싶은 내용을 써보세요. 파이썬의 Global ..

    [북TIL] 파이썬알고리즘인터뷰 6. 문자열 조작

    오늘 TIL 3줄 요약 깔끔하고 빠른 코드를 위해선 리스트 컴프리헨션, 람다 표현식, 정규식을 잘 다룰줄 알아야 함. python의 유용한 메서드는 반드시 기억 같은 기능을 필요로 할때, 처리시간이 빠른 방법을 택하려면 결국 메서드 실행 시간을 알아야함. ex- 문자열 슬라이싱 > reverse() > reversed()+join() > for 반복 > while반복 > 재귀(슬라이싱의54배) TIL (Today I Learned) 날짜 2022.07.21. THU ~ 07.27 WED 오늘 읽은 범위 파이썬알고리즘인터뷰 - 6장 문자열조작 책에서 기억하고 싶은 내용을 써보세요. isalnum() isdigit():숫자 여부인지 판별해준다. 실수나 음수는 판단불가해서 False 반환 a = "1" b =..

    파이썬 알고리즘 인터뷰 5장 리스트, 딕셔너리

    오늘 TIL 3줄 요약 파이썬의 자료형은 모두 객체 다양한 모듈들, 특히 딕셔너리와 관련된 특수 형태의 컨테이너 자료형들을 활용하자 defaultdict, Counter, OrderedDict TIL (Today I Learned) 날짜 2022.07.20. WED 오늘 읽은 범위 파이썬 알고리즘 인터뷰 5장 리스트, 딕셔너리 책에서 기억하고 싶은 내용을 써보세요. 파이썬은 모든 것이 객체다.리스트 또한 객체에 대한 포인터목록을 관리하는 형태로 구현되어 있다. // CPython 에서 리스트는 요소에 대한 포인터목록을 갖고 있는 구조체로 선언되어 있다. typeof struct { PyObject_VAR_HEAD PyObject **ob_item; // 포인트 목록으로 사이즈를 조절하는 형태로 리스트요소..

    [북TIL] 파이썬 알고리즘 인터뷰 1~3장

    오늘 TIL 3줄 요약 파이썬이 왜 코테에 유리한가(코드잼, 카카오 공채 응시 언어별 통계로 확인) 파이썬과 다른 언어들의 반복문, 구조체, 클래스 구현 구조체, 동적 타이핑 언어, 제네릭 프로그래밍이란? 파이썬의 인덴트는 공백 4칸(PEP 8) 좋은 코드는 얼핏 쳐다 보기만해도 향기가 난다. TIL (Today I Learned) 날짜 2022.07.14 THU 오늘 읽은 범위 파이썬알고리즘인터뷰(상길북)1~3장 책에서 기억하고 싶은 내용을 써보세요. 파이썬은 동적 타이핑 언어로 사용하기엔 매우 편하지만, 타입을 명시하지 않으면 가독성을 낮추고 버그 발생 확률이 높아진다. # 타입을 명시하는 예 from typing import TypeVar # 파이썬의 typing 내장 패키지가 파이썬을 정적 타입으..

    [북TIL] 실용주의 프로그래머 4. 실용주의 편집증

    오늘 TIL 3줄 요약 믿지마라. 자신도! 1분은 60초가 아닐 수 있고, 1달은 28일보다 작을 수 있다. 확실한 것은 없다. 작게 쪼개서 일해나가라. 먼 미래를 예상하지 말고 당장의 프로그램을 DRY와 같은 원칙을 지켜 만들어나가라. TIL (Today I Learned) 날짜 2022. 05. 19. THU 오늘 읽은 범위 4장 책에서 기억하고 싶은 내용을 써보세요. 유효한 입력 범위가 무엇인지, 경계 조건이 무엇인지, 루틴이 뭘 전달한다고 약속하는지, 혹은 더 중요하게는 무엇을 약속하지 않는지 등을 나열하는 것만으로도 더 나은 소프트웨어를 작성하는데 엄청난 도움이 된다. 어겨서는 안되는 규칙인 요구 사항과 경영진이 바뀌면 얼마든 없어질 수 있는 단순한 정책을 혼동하지 말아야 한다. 의미론적 불변식..

    [북TIL] 실용주의 프로그래머 3. 기본도구

    오늘 TIL 3줄 요약 도구를 잘 다루도록 연습하라. 모든 것을 CVS 아래에 두고 개발 환경 마저도 쉽게 옮길수 있게 만들라. 디버깅을 두려워 하지마라. TIL (Today I Learned) 날짜 2022. 05. 18. WED 오늘 읽은 범위 3장 책에서 기억하고 싶은 내용을 써보세요. 작업하는 것이 소스 코드가 아닐지라도, 모든 것을 버전관리 아래에 둬라. 각종 문서, 전화번호 목록, 외부 업체에 보내는 메모, makefile, 빌드와 릴리스 절차, 로그 파일을 정리하는 작은 셸 스크립트까지 모두 다. 디버깅을 풀어야 할 퍼즐로 공략하는 대신 현실 부정이나 손가락질, 어설픈 변명, 무관심으로 대하는 사람과 마주치기도 한다. '하지만 정말 그럴 리가 없는데.'로 시작하는 생각의 흐름에 신경 세포 하..

    [북TIL] 실용주의 프로그래머 2장

    오늘 TIL 3줄 요약 ETC) 내가 방금 한 일이 전체 시스템을 바꾸기 쉽게 만들었을까 어렵게 만들었을까? 코드중복과 지식중복은 구분되어야 한다. (후자는 허용) DRY) 코드의 중복: 의도나 기능을 수정할 때 여러 라인의 같은 코드들을 수정해야하지 않을까? TIL (Today I Learned) 날짜 2022. 05. 15. SUN 오늘 읽은 범위 2장 책에서 기억하고 싶은 내용을 써보세요. 우리가 소프트웨어를 개발하는 속도는 요구사항, 사용자, 하드웨어의 변화를 앞지를 수 없다. 그렇기 때문에 직교성, 결합도 등을 고려해 유지보수하기 쉽게 만들어야한다. 거대 공학적 접근 방식(각각의 모듈 작성 -> 결합)과 반대되는 예광탄 코드를 활용하라. 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요 정보..

    [북TIL] 실용주의 프로그래머 1장

    오늘 TIL 3줄 요약 잊지말라. 무엇보다 중요한 것은 즐기는 것이다. 자기의 기예(craft)에 관심을 가져라 훌륭한 잔디밭은 매일 조금씩 손질해주어야 한다. 소프트웨어의 엔트로피, 깨진 창문을 내버려 두지 말라. 시작 피로를 깨기 위해서는 일단 ‘돌멩이’를 내놔라.(돌멩이 수프 이야기) TIL (Today I Learned) 날짜 2022. 05. 15. SUN 오늘 읽은 범위 서문~ 1장 책에서 기억하고 싶은 내용을 써보세요. 이튼칼리지의 훌륭한 잔디밭처럼, 과업은 하루아침에 만들어지지 않는다. 다만 꾸준하고 점진적인 노력이 필요할 뿐. 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요 혼자 완성해나가는 프로젝트에서 '일단 만들자!' 라는 생각으로 진행하다보면 결국엔 스파게티 코드가 되어버려 방..