[백준 / 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 작업 대기프로세스/스..
데이터베이스의 신뢰성을 책임지는 ACID: 원자성, 일관성, 격리성, 지속성 완벽 가이드
·
Backend Development
데이터베이스를 다루는 백엔드 개발자라면 반드시 알아야 할 핵심 개념이 있습니다. 바로 'ACID'입니다. 이 네 글자는 데이터베이스 트랜잭션의 안전성과 신뢰성을 보장하는 근간이 되는 속성들을 의미합니다. 금융 시스템부터 전자상거래까지, 데이터의 정확성과 일관성이 중요한 모든 시스템에서 ACID는 필수적인 요소로 자리 잡고 있습니다.이 글에서는 ACID의 각 속성을 쉽게 이해할 수 있도록 실제 사례와 함께 상세히 살펴보겠습니다.ACID란 무엇인가?ACID는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)의 약자로, 데이터베이스 트랜잭션이 안전하게 수행되는 것을 보장하기 위한 네 가지 핵심 속성을 의미합니다.트랜잭션(Transaction)..
REST API 완벽 가이드: 개념부터 구현까지
·
Backend Development
이미지 출처 - https://blog.postman.com/rest-api-examples/"현대 웹 개발의 핵심 아키텍처, REST API를 제대로 이해하고 활용하는 방법"목차REST란 무엇인가?REST API의 기본 개념REST 구성 요소REST의 특징REST API 설계 원칙REST의 장단점REST API 예시REST의 대안 기술결론REST란 무엇인가?REST(Representational State Transfer)는 2000년 로이 필딩(Roy Fielding)이 자신의 박사 학위 논문에서 처음 소개한 소프트웨어 아키텍처 스타일입니다. REST는 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처입니다.가장 단순하게 설명하자면, REST는 ..