전체 글

전체 글

    [TIL - 20230322]

    😊 잘한점 오늘 준 SQL 문제를 정말 빨리 풀었다! SELECT 문은 다행히 곧 잘 쓸 수 있는 것 같다. 문제를 처음 보면, 테이블이 몇 개 주어지는 부터 파악하고 바로 어떻게 출력해야 하는지 본다. 출력 예시를 보면 어떤 데이터가 필요한지 테이블이 어떻게 구성되어 있을지 예상이 가는 것 같다. 이틀? 삼일만에 이분 탐색 문제를 풀었는데, 다행히 어떻게 쓰는지 잊지 않고 잘 풀 수 있었다. https://yeon-dev.tistory.com/133 [백준/Java] 1654번. 랜선 자르기 문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으 yeon-dev.tisto..

    [백준/Java] 1654번. 랜선 자르기

    문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.) 편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정하자. 그리고 자를 때는 항상 센티미터 단위로 정수길이만큼 자른다..

    [프로그래머스/SQL] 12세 이하인 여자 환자 목록 출력하기

    문제 설명 다음은 종합병원에 등록된 환자정보를 담은 PATIENT 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다. 문제 PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요. 내 풀이 WHERE와 AND절로 12세 이하의 여자 환자 데이터를 필터링하고, 전화번호가 NULL인 경우 NONE을 출력하기 위해 CASE문을 사용했다. SELEC..

    [프로그래머스/SQL] 과일로 만든 아이스크림 고르기

    문제 설명 다음은 아이스크림 가게의 상반기 주문 정보를 담은 FIRST_HALF 테이블과 아이스크림 성분에 대한 정보를 담은 ICECREAM_INFO 테이블입니다. FIRST_HALF 테이블 구조는 다음과 같으며, SHIPMENT_ID, FLAVOR, TOTAL_ORDER 는 각각 아이스크림 공장에서 아이스크림 가게까지의 출하 번호, 아이스크림 맛, 상반기 아이스크림 총주문량을 나타냅니다. FIRST_HALF 테이블의 기본 키는 FLAVOR입니다. ICECREAM_INFO 테이블 구조는 다음과 같으며, FLAVOR, INGREDITENT_TYPE 은 각각 아이스크림 맛, 아이스크림의 성분 타입을 나타냅니다. INGREDIENT_TYPE에는 아이스크림의 주 성분이 설탕이면 sugar_based라고 입력되고..

    [프로그래머스/SQL] 서울에 위치한 식당 목록 출력하기

    문제 설명 다음은 식당의 정보를 담은 REST_INFO 테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다. REST_INFO 테이블은 다음과 같으며 REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾기수, 주차장 유무, 주소, 전화번호를 의미합니다. REST_REVIEW 테이블은 다음과 같으며 REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, REVIEW_TEXT,REVIEW_DATE는 각각 리뷰 ID, 식당 ID, 회원 ID, 점수, 리뷰 텍스트, 리뷰 작성일을 의미합니다. 문제 REST_INFO와 REST_REVIEW..

    [DB/SQL] CASE, WHEN, THEN, ELSE 사용하기

    Case, When, Then, Else 는 다음과 같이 사용할 수 있습니다. case when [조건식] then [반환값] else [일치하는 조건이 없는 경우 반환값] end 예시를 살펴보겠습니다. 유저의 point가 10000점 이상, 5000점 이상 10000미만, 5000점 미만인 경우로 나누어서, 새 필드에 값을 넣어주겠습니다. select pu.user_id, pu.point, (case when pu.point >= 10000 then '1만 이상' when pu.point >= 5000 then '5천 이상' else '5천 미만' end) as lv from point_users pu 위처럼 비교 연산자를 사용하여 조건을 걸어줄 수 도 있고, NULL 연산자나 산술 연산자를 사용해 여..

    [SQL] SUBSTRING_INDEX, SUBSTRING 문자열 데이터 다루기

    SUBSTRING_INDEX SUBSTRING_INDEX의 사용 방법은 다음과 같습니다. STRING_INDEX([문자열],[구분자],[구분자 인덱스]) 예제를 살펴보겠습니다. 예제1 이메일은 id@domain 과 같은 형태로, @을 기준으로 앞은 id, 뒤는 domain이 됩니다. SUBSTRING_INDEX를 사용해서 id와 도메인을 얻어보겠습니다. select SUBSTRING_INDEX('vvegcs@gmail.com', '@', 1) > vvegcs select SUBSTRING_INDEX('vvegcs@gmail.com', '@', -1) > gmail.com 예제2 select SUBSTRING_INDEX('가/나/다/라', '/', 3) >> 가/나/다 select SUBSTRING_IND..