[KAKAO BLIND RECRUITMENT / 2021 / Python] 합승 택시 요금
·
Algorithm/프로그래머스
문제 출처https://school.programmers.co.kr/learn/courses/30/lessons/72413문제 설명밤늦게 귀가할 때 안전을 위해 항상 택시를 이용하던 무지는 최근 야근이 잦아져 택시를 더 많이 이용하게 되어 택시비를 아낄 수 있는 방법을 고민하고 있습니다. "무지"는 자신이 택시를 이용할 때 동료인 어피치 역시 자신과 비슷한 방향으로 가는 택시를 종종 이용하는 것을 알게 되었습니다. "무지"는 "어피치"와 귀가 방향이 비슷하여 택시 합승을 적절히 이용하면 택시요금을 얼마나 아낄 수 있을 지 계산해 보고 "어피치"에게 합승을 제안해 보려고 합니다.위 예시 그림은 택시가 이동 가능한 반경에 있는 6개 지점 사이의 이동 가능한 택시노선과 예상요금을 보여주고 있습니다.그림에서 A..
[KAKAO BLIND RECRUITMENT / 2023 / Python] 이모티콘 할인행사
·
Algorithm/프로그래머스
문제 출처문제 보러가기문제카카오톡에서는 이모티콘을 무제한으로 사용할 수 있는 이모티콘 플러스 서비스 가입자 수를 늘리려고 합니다.이를 위해 카카오톡에서는 이모티콘 할인 행사를 하는데, 목표는 다음과 같습니다.이모티콘 플러스 서비스 가입자를 최대한 늘리는 것.이모티콘 판매액을 최대한 늘리는 것.1번 목표가 우선이며, 2번 목표가 그 다음입니다.이모티콘 할인 행사는 다음과 같은 방식으로 진행됩니다.n명의 카카오톡 사용자들에게 이모티콘 m개를 할인하여 판매합니다.이모티콘마다 할인율은 다를 수 있으며, 할인율은 10%, 20%, 30%, 40% 중 하나로 설정됩니다.카카오톡 사용자들은 다음과 같은 기준을 따라 이모티콘을 사거나, 이모티콘 플러스 서비스에 가입합니다.각 사용자들은 자신의 기준에 따라 일정 비율 이..
[백준 / 27440 / Python] 1 만들기
·
Algorithm/백준
😮 문제가 뭔가요?숫자 N이 주어지면 아래 세 가지 연산 중 하나를 선택해서 1을 만들어야 해요:3으로 나누어 떨어지면 ➡️ 3으로 나누기2로 나누어 떨어지면 ➡️ 2로 나누기1 빼기목표는 가장 적은 횟수로 1을 만드는 거예요!🔗 백준에서 직접 풀어보기😅 처음 생각나는 방법 (근데 이건 틀렸어요!)처음에는 이렇게 생각하기 쉬워요:"3으로 나누는 게 제일 빨리 작아지니까, 3으로 나눌 수 있을 때는 무조건 3으로 나누자!"N = int(input())count = 0while N != 1: if N % 3 == 0: N //= 3 elif N % 2 == 0: N //= 2 else: N -= 1 count += 1print(count..
[백준 / 13705 / Python] Ax+Bsin(x)=C
·
Algorithm/백준
머리말Baekjoon 13705번 문제(( Ax + B \sin(x) = C ))를 풀 때,처음에는 Python 내장 math.sin()을 사용했지만 '틀렸습니다'가 발생했다.왜 그럴까?이 글에서는math.sin()을 사용한 기존 코드Decimal + 직접 테일러 전개로 구현한 정답 코드를 비교하고,왜 Decimal + 테일러 전개가 필요한지 쉽게 설명한다.1. 기존 코드 (math.sin 사용)import sysimport mathinput = sys.stdin.readlinea, b, c = map(int, input().split())l = (c - b) / ar = (c + b) / afor _ in range(80): m = (l + r) / 2 V = a * m + b * math...
Redis의 싱글 스레드 아키텍처: 왜 빠른가?
·
Backend Development
들어가며Redis는 인메모리 데이터베이스로, 매우 빠른 성능을 자랑합니다. 흥미로운 점은 이렇게 빠른 성능을 내는 Redis가 싱글 스레드로 동작한다는 것입니다. 이 글에서는 Redis가 싱글 스레드로 설계된 이유와 그 장점에 대해 자세히 알아보겠습니다.Redis의 싱글 스레드 설계 이유1. 단순성과 안정성Redis가 싱글 스레드로 설계된 가장 큰 이유는 단순성과 안정성 때문입니다.단순한 설계: 멀티스레드 환경에 비해 구현이 간단합니다.안정성: 동시성 문제(레이스 컨디션, 데드락)를 자연스럽게 회피할 수 있습니다.2. 데이터 일관성 보장싱글 스레드 모델은 데이터 일관성을 쉽게 보장할 수 있습니다:모든 명령어가 순차적으로 처리됨복잡한 락(lock) 메커니즘이 필요 없음데이터 불일치 문제 방지성능 최적화1...
Streaming SSR: 서버 사이드 렌더링의 새로운 패러다임
·
Frontend Development
이미지 출처 - https://frontenddesign.codelly.dev/guide/architecture/Streaming-Server-Side-Rendering.html#ssr%E3%81%AE%E5%95%8F%E9%A1%8C%E7%82%B9들어가며웹 애플리케이션의 성능과 사용자 경험을 개선하기 위한 다양한 렌더링 방식이 존재합니다. 그 중에서도 최근 주목받고 있는 Streaming SSR(Server-Side Rendering)에 대해 알아보겠습니다. 이 글에서는 Streaming SSR의 개념, 작동 방식, 그리고 실제 구현 시 고려해야 할 사항들을 자세히 살펴보겠습니다.Streaming SSR이란?Streaming SSR은 기존의 SSR과 달리, 서버에서 렌더링된 HTML을 한 번에 전송하는..
Deque : 양방향 큐의 모든 것
·
자료구조
Python의 collections.deque는 양방향 큐(Double-Ended Queue)를 구현한 자료구조입니다. 이 글에서는 deque의 기본 개념부터 실무에서의 활용까지, Python 개발자라면 알아야 할 모든 것을 설명합니다.1. Deque란 무엇인가?Deque는 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조입니다. 일반적인 리스트와 달리, 양쪽 끝에서의 연산이 O(1) 시간 복잡도를 가지는 것이 특징입니다.Deque의 주요 특징양쪽 끝에서의 삽입/삭제가 O(1) 시간 복잡도스레드 안전한 구현크기 제한 설정 가능메모리 효율적인 구현2. Deque의 기본 연산1. 생성과 기본 연산from collections import deque# 기본 생성d = deque()print(d) # deque..
카카오 클라우드 GPU 서버 설치 및 설정 가이드 (Docker + GPU 최적화)
·
Infra
1. 서버 스펙 정보이 가이드에서는 다음과 같은 서버 사양으로 설정을 진행합니다:인스턴스 타입: gn1i.2xlarge (GPU 인스턴스)운영체제: Ubuntu 20.04 - NvidiaCPU: 8vCPU메모리: 32GB저장공간: SSD 60GB2. 서버 접속하기2.1 접속 준비PEM키가 존재하는 폴더로 이동합니다. 필자는 로컬 컴퓨터의 Downloads 폴더에 저장했습니다.cd Downloads2.2 SSH를 통한 서버 접속다운로드한 PEM 키 파일을 사용하여 서버에 접속합니다:ssh -i quiznote.pem ubuntu@[ip주소]참고: [ip주소] 부분에는 카카오 클라우드에서 할당받은 실제 IP 주소를 입력해야 합니다.3. 서버 초기 설정3.1 시스템 업데이트서버에 접속한 후 가장 먼저 패키지 ..
시스템 간 비동기 연동 방식 완벽 가이드
·
Backend Development
📝 들어가며현대의 분산 시스템에서는 여러 서비스가 서로 연동되어 동작합니다. 이때 시스템 간의 연동 방식은 전체 시스템의 성능과 안정성에 큰 영향을 미칩니다. 특히 비동기 연동 방식은 시스템 간의 결합도를 낮추고, 응답 시간을 개선하는 데 큰 도움이 됩니다. 이번 글에서는 시스템 간 비동기 연동의 주요 방식들과 각각의 특징을 살펴보겠습니다.🎯 비동기 연동의 장점비동기 연동 방식은 다음과 같은 장점을 제공합니다:시스템 간 결합도 감소빠른 응답 시간시스템 확장성 향상장애 격리 용이💡 주요 비동기 연동 방식1. 메시징 시스템 활용메시징 시스템은 시스템 간의 비동기 통신을 위한 중간 매개체 역할을 합니다.주요 특징높은 처리량메시지 브로커 사용 (Kafka, RabbitMQ 등)유연한 확장성구현 예시// K..
프로세스 vs 스레드: 컨텍스트 스위칭의 차이점과 성능 비교
·
Backend Development
운영체제에서 멀티태스킹을 구현하는 핵심 메커니즘인 컨텍스트 스위칭에 대해 알아보겠습니다. 특히 프로세스와 스레드의 컨텍스트 스위칭이 어떻게 다른지, 그리고 왜 스레드의 컨텍스트 스위칭이 더 빠른지 자세히 살펴보겠습니다.컨텍스트 스위칭이란?컨텍스트 스위칭은 CPU가 현재 실행 중인 작업을 다른 작업으로 전환하는 과정입니다. 이는 멀티태스킹 시스템에서 필수적인 메커니즘으로, 여러 작업이 동시에 실행되는 것처럼 보이게 합니다.컨텍스트의 구성 요소CPU 레지스터 상태프로그램 카운터 (PC)스택 포인터 (SP)범용 레지스터메모리 상태프로세스/스레드 상태 정보컨텍스트 스위칭이 발생하는 시점시간 할당량 소진각 프로세스/스레드에 할당된 CPU 시간이 소진될 때공정한 CPU 사용을 위해 필수적I/O 작업 대기프로세스/스..