본문 바로가기

Algorithm

(48)
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 1) 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 2) 총 대여 횟수가 5회 이상인 자동차들에 대해서 3) 해당 기간 동안의 4) 월별 자동차 ID 별 5) 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요. 문제 풀이 대여 시작일을 기준으로 WHERE 조건을 건다. 위 해당 기간 동안의 자동차별 총 대여 횟수를 알기 위해 GROUP BY로 묶어주고, 그 중 5회 이상인 자동차를 뽑기 위하여 HAVING 조건을 건다...
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 식품분류별 가장 비싼 식품의 정보 조회하기 문제 FOOD_PRODUCT 테이블에서 1) 식품분류별로 2) 가격이 제일 비싼 식품의 3) 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 4) 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요. 문제 풀이 식품분류별로 조회하기 위하여 GROUP BY로 묶는다. 가격이 가장 비싼 식품을 구하기 위하여 max 함수로 조회한다. 가격이 가장 비싼 식품의 분류, 가격만 뽑아낸 서브쿼리와 기존 쿼리를 JOIN하여 식품의 이름을 조회한다. 출력시킬 식품분류에 속해있는지 WHERE 조건을 통해 조회한다. 전체 코드 SELECT b.CATEGORY, b.MAX_PRICE, a.PRODUCT_NAME FROM FOOD_PRODU..
[프로그래머스] Oracle - (SQL 고득점 Kit) GROUP BY 진료과별 총 예약 횟수 출력하기 문제 APPOINTMENT 테이블에서 1) 2022년 5월에 예약한 환자 수를 2) 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요. 문제 풀이 2022년 5월에 예약한 환자만 뽑기 위하여 WHERE절에 조건을 건다. 진료과코드 별로 조회하기 위하여 GROUP BY로 묶는다. 위의 조건에 해당하는 총 건수를 구하기 위하여 count 함수로 조회한다. 전체 코드 SELECT MCDP_CD AS "진료과코드", count(*) AS "5월예약건수" FROM APPOINTMENT WHERE TO_CHAR(APNT_..
[프로그래머스] Oracle - (SQL 고득점 Kit) IS NULL 문제 풀이 경기도에 위치한 식품창고 목록 출력하기 SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, NVL(FREEZER_YN, 'N') FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE '경기%' 이름이 없는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY 1 이름이 있는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY 1 NULL 처리하기 SELECT ANIMAL_TYPE, NVL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANI..
[프로그래머스] Oracle - (SQL 고득점 Kit) SUM,MAX,MIN 문제 풀이 가장 비싼 상품 구하기 SELECT max(PRICE) AS "MAX_PRICE" FROM PRODUCT 가격이 제일 비싼 식품의 정보 출력하기 SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT max(PRICE) FROM FOOD_PRODUCT) 최댓값 구하기 SELECT max(DATETIME) AS "시간" FROM ANIMAL_INS 최솟값 구하기 SELECT min(DATETIME) AS "시간" FROM ANIMAL_INS 동물 수 구하기 SELECT count(*) AS "count" FROM ANIMAL_INS 중복 제거하기 SELECT count(DISTINCT NAME) AS "count" FROM ANIMAL_INS WHERE NAME IS NOT..
[프로그래머스] Oracle - (SQL 고득점 Kit) SELECT Level 2,3,4 문제 풀이 3월에 태어난 여성 회원 목록 출력하기 SELECT MEMBER_ID, MEMBER_NAME, GENDER, TO_CHAR(DATE_OF_BIRTH, 'YYYY-mm-dd') AS DATE_OF_BIRTH FROM MEMBER_PROFILE WHERE TO_CHAR(DATE_OF_BIRTH, 'mm') = 03 AND GENDER = 'W' AND TLNO IS NOT NULL ORDER BY 1 서울에 위치한 식당 목록 출력하기 SELECT info.REST_ID, info.REST_NAME, info.FOOD_TYPE, info.FAVORITES, info.ADDRESS, ROUND(avg(review.REVIEW_SCORE), 2) AS SCORE FROM REST_INFO info JOIN RES..
[프로그래머스] Oracle - (SQL 고득점 Kit) SELECT Level 1 문제 풀이 평균 일일 대여 요금 구하기 SELECT ROUND(avg(DAILY_FEE), 0) AS AVERAGE_FEE FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE = 'SUV' 강원도에 위치한 생산공장 목록 출력하기 SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE '강원도%' ORDER BY 1 12세 이하인 여자 환자 목록 출력하기 SELECT PT_NAME, PT_NO, GEND_CD, AGE, NVL(TLNO, 'NONE') FROM PATIENT WHERE AGE 3000 AND i.INGREDIENT_TYPE = 'fruit_based' ORDER BY f.TOTAL_ORDER ..
[백준] Python - 22942 데이터 체커 문제 링크 https://www.acmicpc.net/problem/22942 22942번: 데이터 체커 데이터가 조건에 맞는다면 YES, 조건에 만족하지 않는다면 NO를 출력한다. www.acmicpc.net 문제 풀이 처음에는 원을 모두 입력받아서 정직하게 외부에 있는지, 내부에 있는지 반지름끼리 더하고 빼고 중심사이의 거리를 비교해서 풀이했는데, 시간 초과가 떴다. 그래서 다른 블로그의 아이디어를 참고해서 풀었는데, 그래도.. 시간 초과가... 어쨌든 마지막에 import stdin 이 부분만 추가해주니 해결되었다! 그냥 input()으로 받아선 안되나보다.. 원을 입력 받을 때, 리스트에 x축 위에 있는 양 끝점 정보를 넣어준다. (x-r, x, 0) = (중심에서 반지름을 뺀 왼쪽 점, 중심, ..