2025/02 23

[MySQL][프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 / (Lv4)

https://school.programmers.co.kr/learn/courses/30/lessons/157339🗒️SQL 코드 풀이 # 자동차 종류 : 세단 or SUV / 2022년 11월 1일 ~ 11월 30일 / 대여 금액 50만원 ~ 200만원 # 자동차 ID / 자동차 종류 / 대여 금액 # 대여 금액(FEE) 기준 내림차순 정렬 / 자동차 종류 오름차순 / 자동차 ID 내림차순SELECT C.CAR_ID, C.CAR_TYPE, ROUND(DAILY_FEE*30*((100-D_P.DISCOUNT_RATE)/100),0) FEE FROM CAR_RENTAL_COMPANY_CAR C LEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY R..

[Python][프로그래머스] 가장 큰 수 / 정렬 (Lv2)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42746#🗒️ 파이썬 코드 풀이def solution(numbers): lst = list(map(str,numbers)) lst = sorted(lst, key=lambda x:x*3, reverse=True) answer = str(int(''.join(lst))) return answer 시간 복잡도 O( N·Log N)  1. 해당 문제에서 일반 정렬을 하면 안된다. [3, 30, 34, 5, 9]일반 정렬을 할 경우, [9, 5, 34, 30, 3] 이 되는데, 이거를 합쳐도 최대 값이 나오지 않는다.   2. 이 문제의 목표는 저런 배열이 ..

[Python][프로그래머스] 전화번호 목록 / 해시,정렬 (Lv2)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42577🗒️ 파이썬 코드 풀이 1def solution(phone_book): answer = True phone_book.sort() for i in range(len(phone_book)-1): if phone_book[i+1].startswith(phone_book[i]): return False return answer 1. phone_book이 문자열임에 주목하여 sort를 해준다.  2. startswith 함수로 현재 번호와 다음 번호를 비교해준다.문자열 크기대로 정렬했으므로 접두사 중복 무조건 체크 가능중복되는 부분은 ..

[1분 면접] DB 시스템에서 동시성 제어하는 방법

📌 면접 답변대표적인 동시성 제어 방식으로 2가지가 있다.간단하게만 살펴보고, 이후 추가 학습을 진행해보자.   1. MVCC (Multi-Version Concurrency Control)DB의 동시성을 보장하면서 락을 최소화 하여 성능 향상읽기 작업시 잠금을 사용하지 않아 높은 동시성 제공읽기 트랙잭션트랜잭션이 시작된 시점의 데이터 읽음다른 트랜잭션이 데이터를 수정하더라도 내 트랜잭션이 볼 수 있는 데이터는 변하지 않음쓰기 트랜잭션데이터를 수정하면, 새로운 버전 생성변경 내용이 Commit 되면 새로운 버전 확정이후 시작하는 트랜잭션들은 이 새로운 버전을 읽음기존에 진행 중인 트랜잭션들은 본인이 시작한 시점의 스냅샷때문에 최신 데이터 볼 수 없음 다른 트랜잭션이 데이터를 변경해도, 이미 시작된 트랜..

[1분 면접] HTTP 매서드에서 멱등성이란 무엇인가 ?

멱등성이란 ? 영어로 Idempotent (살면서 처음 보는 단어이다...)사전적의미로는 동일한 연산을 여러 번 수행해도 똑같은 결과를 나타냄  HTTP 매서드의 멱등성동일한 요청을 한번 보내는것과 여러번 보내는 것이 동일한 효과를 지님멱등하다면 요청을 재시도할 때 같은 서버의 상태를 보장하기 때문에 문제 없음멱등하지 않는다면 재시도 요청시 중복 요청을 보내 문제 발생  멱등한 HTTP 매서드 GET (리소스 조회 요청으로 서버 상태 변하지 않음)HEAD (응답 없이 헤더만 반환, 상태 변경 없음)PUT (특정 리소스를 완전히 교체하는 요청, 동일한 데이터 여러번 보내도 똑같은 결과)DELETE (리소스 삭제하는 요청으로, 다시 요청해도 결과 동일) 멱등하지 않는  HTTP 매서드 POST (새로운 리소..

[1분 면접] 사용자가 웹사이트에 처음 접근했을 때 발생하는 일련의 과정

[면접 대답]1. Clinet가 URL 입력  ( HTTP 프로토콜을 사용해 구글 웹 서버와 통신 시도) 2. 브라우저는 도메인 네임에 대한 IP 주소를 알아야 하기 때문에 DNS 서버에 질의 응답으로 해당 도메인에 대한 IP 주소 응답 받음3. IP 주소를 얻은 후, 브라우서는 구글 서버와 통신TCP/IP를 기반으로 TCP 3-Way Handshake 과정 필요 4. TCP 연결이 성립된 후, 브라우저는 HTTP Request 메시지 생성데이터 패킷 형태로 네트워크에 전달5. 서버는 클라이언트의 요청을 수신하고, HTTP Response 메시지를 생성하여 응답서버는 상태 코드와 함께 웹 페이지 데이터 전송브라우저는 데이터(HTML/CSS, JS)를 해석하여 화면에 페이지 렌더링6. 모든 데이터 전송이 ..

[MySQL][Leet Code] 1633. Percentage of Users Attended a Contest (Easy)

https://leetcode.com/problems/percentage-of-users-attended-a-contest/?envType=study-plan-v2&envId=top-sql-50🗒️SQL 코드 풀이 SELECT R.contest_id, ROUND(COUNT(DISTINCT R.user_id)/(SELECT COUNT(DISTINCT user_id)FROM Users)*100 ,2) percentage FROM Register R GROUP BY contest_id ORDER BY percentage DESC, contest_id 1. 메인 테이블은 Register의 테이블이다.  2. Register 테이블을 cont..

[Python][프로그래머스] 프로세스 / 스택, (Lv2)

🖇️ 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42587🗒️ 파이썬 코드 풀이def solution(priorities, location): queue = [(i,p) for i,p in enumerate(priorities)] answer = 0 while True : cur = queue.pop(0) if any(cur[1]  시간 복잡도 O( N² ) 1. deque 라이브러리 없이 풀이한 코드이다. deque를 안써도 되기는 하지만 pop(0)의 시간복잡도는 O(N)pop()의 시각복잡도는 O(1) 지금은 pop(0)을 써도 큰 상관은 없어서 쓰지만, 문제 생길 경우 deqeu..