반응형

프로그래밍 135

[코딩테스트] 해시 - 전화번호 목록

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr phone_book 전화번호부에 있는 어떤 A라는 번호가 어떤 B라는 번호의 접두어인 경우 False를 리턴, 없는 경우 True를 리턴하는 문제 즉 ["A", "A238712"] 일 경우 False 전략 01. 딕셔너리 문제 제목 자체가 해시를 언급하고 있어서 딕셔너리를 이용해 어떻게 풀 수 있을 지 생각해봤다. 딕셔너리를 하나 만들고 반복문을 돌면서 전화번호부를 검사하는데, 검사가 끝난 ..

[코딩테스트] 힙(Heap) - 더 맵게

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 모든 음식이 어떤 K값 이상의 스코빌 지수를 가질 때까지 가장 낮은 스코빌 지수를 가진 음식 두개를 섞어 새로운 음식을 만드는 문제 파이썬의 힙은 최소 힙이므로 이를 이용하면 된다. 전략 01. 힙 scoville 리스트를 힙 구조로 만든 뒤 최소값을 두개 빼내서 연산하고 다시 push하는 방식으로 하면 될 것 같다. 풀이 import heapq def solution(scoville, K)..

[Overview] 02. Data Manipulation - (2) Program Execution

01. 프로그램의 실행 (Program Execution) 1. 프로그램 로드 2. 인출(Fetch) 3. 해석(Decode) 4. 실행(Execute) CPU의 전체적인 실행과정을 살펴보기 위해서는 레지스터 중 특별한 용도가 지정되어 있는 명령 레지스터(Instruction Register)와 프로그램 카운터(Program Counter)를 살펴봐야 한다. 명령 레지스터는 실행할 명령을 차례대로 저장하는 레지스터이며, 프로그램 카운터는 다음에 실행할 명령의 주소를 가지고 있으며 현재 프로그램이 어디까지 실행됐는지 추적하는 수단으로 사용된다. 01. 프로그램의 실행 (Program Execution) 프로그램의 실행, 즉 CPU의 작업은 기계 주기(machine cycle)이라는 3단계 과정을 반복함으로..

[프로젝트] 08. 한글 학습 퀴즈 서비스 - 한 (Part 2. 웹소켓)

최종 프로젝트인 만큼 리뷰할 게 많아 글을 두 개 세 개로 나눴다. 주요 코드 리뷰 04. 웹소켓 서론 이번 프로젝트에서 처음으로 웹소켓을 사용했다. django의 서드파티인 channels를 이용해 웹소켓을 구성할 수 있다는 말을 듣고 공식문서 예제를 따라 채팅 기능을 만들어 놓고 보니 대략적인 감이 왔다. 기존의 stateless한 HTTP통신과는 달리 웹소켓은 handshake를 통해 HTTP로 통신을 개시한 뒤 연결이 유지되는 동안 양방향 통신이 가능하다는 점에서 달랐다. channels에서 웹소켓을 구성하는 Consumer클래스는 크게 connect, receive, disconnect 세 가지 함수로 구성되어 있는데 각각 연결을 개시하고, 클라이언트에서 오는 메세지를 받고, 연결을 종료하는 것..

[코딩테스트] 탐욕법(Greedy) - 단속카메라

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 은근 자주 나오는 문제 유형 1차원의 선 위에 두 점이 주어진 선분이 여러 개 중복되어 있을 때 몇 개의 점을 찍어야 모든 선분을 선택할 수 있는가 전략 01. 각 선분의 끝점을 기준으로 정렬하기 각 선분의 끝점을 기준으로 정렬하고 첫번째 선분의 끝점을 선택하고 나면 그 사이에 몇 개의 선분이 있던지 전부 선택된다. 그렇게 선분을 읽어 나가다가 기존의 점이 포함되지 않는 선분이 있을 경우 그..

[코딩테스트] 2022 KAKAO BLIND RECRUITMENT - 주차 요금 계산

문제 https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주차장의 요금표와 차량 입출차 기록이 주어졌을 때 차량 별로 주차 요금을 계산하는 문제 기본 요금이 주어지고 기본 요금을 초과했을 경우에는 각 케이스의 fees에 따라 요금을 계산해야 된다. 차량은 여러번 입출차할 수 있으나 마지막 출차 기록이 없을 경우 23:59에 출차한 것으로 간주함. 전략 01. datetime, dict 시간 계산은 datetime으로 하면 될 것 같고 입차한 차량의..

[코딩테스트] 2019 KAKAO BLIND RECRUITMENT - 실패율

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오천성 게임의 각 스테이지 난이도를 조절하기 위해 플레이어들의 진행상황으로부터 실패율을 구하는 문제 N개의 스테이지가 있고 각 유저의 진행도를 나타내는 stages가 있을 때 스테이지를 실패율이 높은 순으로 정렬하기 전략 01. groupby 각 플레이어의 진행도를 정렬하고 itertools 라이브러리의 groupby를 이용해 진행한 스테이지 별로 묶은 뒤, 각각의 개수를 세면 전체 플레이어..

[코딩테스트] 2018 KAKAO BLIND RECRUITMENT - 캐시

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DB캐시를 적용해 성능 개선하는 문제 miss시에는 실행시간 5초, hit시에 실행시간이 1초일 때 LRU 알고리즘을 이용해 주어진 캐시크기로 캐싱하면 주어진 데이터들의 실행시간은? 전략 01. deque 처음 문제를 읽고 나서 collections 라이브러리의 deque를 떠올렸다. deque에서 요소가 가득 차 있을 경우 가장 오래된 요소부터 축출되는 LRU(Least Recently U..

[프로젝트] 08. 한글 학습 퀴즈 서비스 - 한 (Part 1. 퀴즈)

🎈매일 쉽고 재밌게 퀴즈를 풀며 한국어를 학습하는 서비스. 프로젝트 정보 프로젝트: 한글 학습 퀴즈 서비스 - 한 (내일배움캠프 최종 프로젝트) 개발기간: 2023.06.05 - 2023.07.10 ( 35일 ) 주요 기능: 소셜로그인, 실시간 배틀 기능, 십자말퍼즐 역할 부리더 실시간 배틀 및 배틀 로비 기능 개발 4종 퍼즐 개발 전반적인 프론트엔드 개발 깃허브 관리 담당자 기술스택: BE 프로그래밍 언어: Python 3.8.6 BE 웹개발 프레임워크: Django 4.2 FE 프로그래밍 언어: JavaScript 의존성 관리(Dependency Manager): poetry 1.4.2 데이터베이스(Database): PostgreSQL 라이브러리 Django REST framework - 3.14...

[Overview] 02. Data Manipulation - (1) Computer Architecture and Machine Language

01. CPU 기초 (CPU Basics) 02. 기계어 (Machine Language) RISC (Reduced Instruction Set Computer) VS. CISC (Complex Instruction Set Computer) 명령의 종류 (Type of Instructions) 1장에서는 주저장장치인 메모리에 데이터를 어떻게 저장하는지에 대해 공부했다면 2장에서는 저장된 데이터를 컴퓨터가 어떻게 조작하는지에 대해서 공부할 것이다. 데이터 조작을 제어하는 컴퓨터 안의 회로는 중앙처리장치(Central Processing Unit, CPU) 혹은 프로세서(Processor)라고 불린다. 초기의 ENIAC과 같은 컴퓨터에서 CPU는 선반 여러 개에 나누어진 큰 장치였으나 현대로 오면서 CPU의..

반응형