[프로그래머스 / PCCP 기출문제 2번 / Python] 퍼즐 게임 챌린지
·
Algorithm/프로그래머스
문제당신은 순서대로 n개의 퍼즐을 제한 시간 내에 풀어야 하는 퍼즐 게임을 하고 있습니다. 각 퍼즐은 난이도와 소요 시간이 정해져 있습니다. 당신의 숙련도에 따라 퍼즐을 풀 때 틀리는 횟수가 바뀌게 됩니다. 현재 퍼즐의 난이도를 diff, 현재 퍼즐의 소요 시간을 time_cur, 이전 퍼즐의 소요 시간을 time_prev, 당신의 숙련도를 level이라 하면, 게임은 다음과 같이 진행됩니다.diff ≤ level이면 퍼즐을 틀리지 않고 time_cur만큼의 시간을 사용하여 해결합니다.diff > level이면, 퍼즐을 총 diff - level번 틀립니다. 퍼즐을 틀릴 때마다, time_cur만큼의 시간을 사용하며, 추가로 time_prev만큼의 시간을 사용해 이전 퍼즐을 다시 풀고 와야 합니다. 이전..
[프로그래머스 / PCCP 기출문제 9번 / Python] 지폐 접기
·
Algorithm/프로그래머스
문제 출처https://school.programmers.co.kr/learn/courses/30/lessons/340199문제민수는 다양한 지폐를 수집하는 취미를 가지고 있습니다. 지폐마다 크기가 달라 지갑에 넣으려면 여러 번 접어서 넣어야 합니다. 예를 들어 지갑의 크기가 30 * 15이고 지폐의 크기가 26 * 17이라면 한번 반으로 접어 13 * 17크기로 만든 뒤 90도 돌려서 지갑에 넣을 수 있습니다. 지폐를 접을 때는 다음과 같은 규칙을 지킵니다.지폐를 접을 때는 항상 길이가 긴 쪽을 반으로 접습니다.접기 전 길이가 홀수였다면 접은 후 소수점 이하는 버립니다.접힌 지폐를 그대로 또는 90도 돌려서 지갑에 넣을 수 있다면 그만 접습니다.지갑의 가로, 세로 크기를 담은 정수 리스트 wallet과..
[프로그래머스 / PCCP 기출문제 1번 / Python] 동영상 재생기
·
Algorithm/프로그래머스
문제 설명동영상 플레이어의 위치 제어 시스템을 구현하는 문제입니다.재생기는 'prev'와 'next' 두 가지 명령어를 지원하며, 오프닝 자동 건너뛰기 기능이 있습니다.prev 명령어는 현재 위치에서 10초 뒤로 이동합니다. 단, 영상의 시작점인 0초보다 앞으로는 이동할 수 없습니다. next 명령어는 현재 위치에서 10초 앞으로 이동하며, 영상의 총 길이를 초과하여 이동할 수 없습니다.재생 위치가 오프닝 구간에 들어가면(op_start ≤ 현재 위치 ≤ op_end) 자동으로 오프닝 끝 지점(op_end)으로 건너뜁니다.기본 이동 명령어prev: 현재 위치에서 10초 전으로 이동 (단, 0초 미만으로는 이동 불가)next: 현재 위치에서 10초 후로 이동 (단, 동영상 길이를 초과하여 이동 불가)자동 ..
[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..