개정판 | 2021년 3월 15일 | 김종민 저 약 2년 전 페이스북과 SEF2019를 통해 우연히 연락을 한 것을 계기로 알게 된 개발자 한 분이 계시다. 지금은 체대 출신 개발자로 유명해지셔서 강의도 찍고 많은 분께 좋은 영향을 끼치는 개발자로 성장하신 분이다. 운이 좋게 2021년 11월쯤 연락이 닿게 되어 짧은 시간 Zoom으로 미팅을 할 수 있었고 그때 추천받은 책으로 읽게 되었다. 책을 읽기 전에 이미 저자에 대해서 알고 있었다. 본인을 소개할 때 "인터렉티브 디벨로퍼"라는 단어를 사용하곤 하시는데 국내에선 낯설게 느껴지는 게 사실이다. 한때 궁금해서 저자의 작업물을 찾아보기도 하고 유튜브 채널을 운영하고 계셔서 채널 영상들을 보며 "인터렉티브 디벨로퍼"라는 의미를 조금 이해할 수 있었다. 개..
💡 Goal - 큐를 이해한다. - 큐를 파이썬으로 구현한다. - 큐 특징 2가지 이상 말하기. 개념 FIFO(First In First Out)으로 동작하며 데이터간 순서를 약속하는 추상자료형을 말한다. 가장 먼저 들어온 데이터가 가장 먼저 삭제 대기열과 같은 개념 (ATM기 줄서있는 사람들 모습) 특징 deque를 사용해 큐 자료구조 구현 (doubly-ended-queue의 약자) deque는 내부적으로 doubly linked list로 구현 맨 앞, 뒤에 데이터를 삭제하고 삭제할 수 있게 하는 자료형 enqueue: 끝에 삽입 peek: 시작 개체값 리턴 dequeue: 시작 개체값 제거 큐의 활용 스케줄링 동시에 실행되는 여러 프로세스의 자원을 배정을 적절히 조절해 성능 개선 어떤 작업이 병렬..
💡 Goal - 스택을 이해한다. - 스택을 파이썬으로 구현한다. - 스택 특징 2가지 이상 말하기. 개념 LIFO(Last In First Out)으로 동작하며 데이터간 순서를 약속하는 추상자료형 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조 마치 스시를 다 먹고 접시를 쌓아 올리는 형태와 같은 개념으로 처음 쌓은 접시가 가장 나중에 제거 특징 스택의 활용 컴퓨터 내부 프로세스 실행 구조의 함수 동작 함수는 가장 나중에 호출된 것이 가장 먼저 종료 웹 브라우저 방문 기록 역순 문자열 생성 구조가 단순해 구현이 쉬움 데이터를 삽입, 삭제, 접근이 가능한 자료형 파이썬으로 코드를 구현할때 deque를 사용하거나 list를 사용 스택은 단순히 빠른 성능을 위해 사용되기에 배열 구조를 활용해 구현 deque ..
본 포스팅에 적혀진 코드 작성 부분의 필드명, DB명은 포스팅을 위해 가상으로 작성하였습니다. 대신 코드는 직접 작성하였고 업무상의 내용이 포함되어 자세한 내용은 생략하였습니다. 1. 문제상황 Django를 통해 API를 개발하면 SQL 대신 ORM을 사용하게 됩니다. Django는 ORM을 작성 할때 debug_toolbar라는 미들웨어를 통해 보다 쉽게 query explain과 select query문을 조회할 수 있습니다. 쿼리의 갯수와 실행계획, ORM을 통해 작성된 쿼리 확인 가능 평소처럼 회사에서 개발하고 있는데 년/월 기준 전체 강사들의 정산 페이지의 정보를 한번에 볼 수 있는 리스트 페이지 API를 개발해야 하는 업무가 생겼습니다. 작업해야하는 API의 조건은 전혀 문제되지 않아 작업에 ..
1. 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 2. ..
1. 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. 2. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고..