본문 바로가기

알고리즘 SQL 문제풀이

(7)
[SQL] 프로그래머스 고득점 kit - JOIN 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기SQL의 실행 순서에 따라, FROM - JOIN - WHERE - GROUP BY - HAVING - SELECT - ORDER BY에서select보다 앞에 있으면 별칭을 쓸 수가 없음. 그러나 having은 모종의 이유로 쓸 수 있음. order by 도 당연히 가능.with discount_rates as ( select car_type, discount_rate from car_rental_company_discount_plan where car_type in ('SUV', '세단') and duration_type = '30일 이상'),unavailable_ones as (select distinct car_id from car_r..
[SQL] 프로그래머스 고득점 kit - IS NULL 경기도에 위치한 식품창고 목록 출력하기select warehouse_id, warehouse_name, address, case when freezer_yn is null or freezer_yn = 'N' then 'N' else 'Y' end freezer_ynfrom food_warehouse where substring(address,1,3) = '경기도' order by warehouse_id  이름이 없는 동물의 아이디select animal_id from animal_ins where name is null order by animal_id  이름이 있는 동물의 아이디select animal_id from animal_ins where name is not null order by anima..
[SQL] 프로그래머스 고득점 kit - GROUP BY GROUP BY는 기본적으로, 데이터 그룹화 및 집계 작업의 핵심 기능임. 데이터를 특정 컬럼 값에 따라 그룹으로 묶고, 각 그룹에 대해 집계 함수를 적용할 때 사용됨. 예를 들어, employees 라는 테이블이 있고, employee_id, department_id, job_id, salary가 있을 때,특정 부서의 특정 직위가 받는 평균 연봉이 얼마인지 확인하려면 어떻게 해야하나? group by를 써서 딕셔너리로 치면 "key"가 되는 튜플을 만들어주면 됨.SELECT department_id, job_id, AVG(salary) AS avg_salaryFROM employeesGROUP BY department_id, job_id; 그럼 결과적으로 이렇게 dep_id와 job_id를 묶어서 하나..
[SQL] 프로그래머스 고득점 kit - select 관련 일단 키워드들을 외우기 전에, SQL 명령어의 기본 form부터 정리함 : 크게 4가지 - DDL, DML, DQL, DCL 1) DDL: Data Definition Language: 데이터베이스 구조 정의ex) create: 새로운 DB 생성, drop: 테이블 제거 2) DML: Data Manipulation Language: 데이터 조작ex) insert~values: 데이터를 테이블에 삽입, update: 테이블 데이터 수정, delete: 테이블 데이터 제거 3) DQL: Data Query Language: 데이터 조회ex) select~from~where, select~from~order by, select~from~group by~having 4) DCL: Data Control Lan..
[알고리즘] 충돌위험 찾기, 가장 많이 받은 선물, 도넛과 막대 그래프 충돌위험 찾기매우매우 꼬여있는 문제다. 처음 읽을 때는 안 그래보이지만, 막상 시작하면 어떻게 자료구조를 구축하느냐에 따라 매우매우 더러워질 수 있는 여지가 있는 문제다. 그러나 이는 구현의 영역이다. 중요한 것을 두 가지 깨달았다. 1 dictionary를 iterate 할때는 dictionary의 사이즈를 바꾸면 안된다. 나는 어차피 이미 해당 iteration이 끝나고 반영되기도 하고 list처럼 순서를 신경 쓰는 자료구조가 아니므로 문제없을 줄 알았는데, 이도 안된다는 것을 확인했다. 2 파이썬의 공간복잡도 제한은 생각보다 널널하다. 다른 사람의 풀이 중, 이걸 그냥 모든 로봇의 경로를 리스트화 한 다음 - 각 성분은 x,y,ind - 그걸 단순 비교해준 풀이도 있었다. 그렇게 하면 경로가 길어질..
[알고리즘] 동영상 재생기, 퍼즐 게임 챌린지, 충돌위험 찾기 동영상 재생기문자열 앞에 "0"값을 채우는 함수는 string_number.zfill(n)0이 아니라 다른 것으로 채우고 싶다면 string_number.rjust(n, "a")format도 있지만 외우지는 말자 내 풀이def solution(video_len, pos, op_start, op_end, commands): def trim(val): mn, sc = val.split(':') return int(mn)*60 + int(sc) video_len = trim(video_len) pos = trim(pos) op_start = trim(op_start) op_end = trim(op_end) if op_start   ..
[알고리즘] 실습용 로봇, 석유 시추, 보물 지도 실습용 로봇방향성을 다루는 부분을 단순하게 표현하기만 하면 금방 푸는 문제. 내 풀이def solution(command): x, y = 0, 0 dir_x, dir_y = 0, 1 for com in command: if com == 'G': x, y = x+dir_x, y+dir_y elif com == 'B': x, y = x-dir_x, y-dir_y elif com == 'R': dir_x, dir_y = dir_y, -dir_x else: dir_x, dir_y = -dir_y, dir_x return [x, y]  석유 시추2D를 traverse 하다가, 기름이 나타나면 그 기름이 속한 덩어리..