Firefly Pointer 궁금하신 점이 있다면 댓글로 남겨주세요.(2023년~ 노션으로 이동) — 궁금하신 점이 있다면 댓글로 남겨주세요.(2023년~ 노션으로 이동)
전체 글

전체 글

    [백준] no1541: 잃어버린 괄호 (정규표현식)

    [백준] no1541: 잃어버린 괄호 (정규표현식)

    문제 : 입력된 문자열에서 입력된 숫자를 부호 기준으로 나누어 계산하여 최소값을 출력 문제 링크: https://www.acmicpc.net/submit/1541/57721152 원리 1. 부호를 기준으로 나눠서 계산 2. 최소값을 구해야 하므로, 최대한 뺄 수 있는 만큼 빼야됨 3. 정규 표현식 사용 String[] forPlus = tempStr.split("[^A-Z0-9]+|[^0-9$]"); 풀이방법 1. "-"를 기준으로 블록을 나눔 2. "-"를 기준으로 나눈 블록마다 들어있는 숫자를 합함 3. 첫 번째 블록의 합산에서 나머지 블록만큼을 전부 빼줌 * 1. '-'를 기준으로 전부 나눠서 저장 : -기준으로 나눈 값들은 전부 +이므로, 총 합을 맨 첫 숫자에서 빼주면 최소값이 됨 * 2. '+..

    [Programmers] no157341: 대여 기록이 존재하는 자동차 리스트 구하기

    [Programmers] no157341: 대여 기록이 존재하는 자동차 리스트 구하기

    문제 -- CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블 -- 자동차 종류가 '세단' -- 10월에 대여를 시작한 기록이 있는 자동차 -- ID 리스트를 출력 -- 자동차 ID 리스트는 중복이 없어야 하며 -- 자동차 ID를 기준으로 내림차순 정렬 풀이방법 1. INNER JOIN을 이용해 두 테이블을 조인한다.(중복되는 값을 가진 컬럼을 이용해 조인) 2. GROUP BY 이전에 WHERE을 이용하거나 GROUP BY 이후에 HAVING을 이용해 필터링 해준다.(동시사용 가능) 3. 중복을 제거하기 위해 GROUP BY로 CAR_ID를 묶어준다. 나의 코드 SELECT CAR.CAR_ID FROM CAR_RENTAL_COMPANY_..

    [Programmers] no157340: 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

    [Programmers] no157340: 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

    문제 -- CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 -- 2022년 10월 16일에 -- 대여 중인 자동차인 경우 '대여중' -- 대여 중이지 않은 자동차인 경우 '대여 가능' -- 컬럼명: AVAILABILITY을 추가 -- 자동차 ID와 AVAILABILITY 리스트를 출력 -- 반납 날짜가 2022년 10월 16일인 경우에도 '대여중' -- 결과는 자동차 ID를 기준으로 내림차순 정렬 풀이방법 Key point 1. 새로운 컬럼을 만들어야 한다.(AVAILABILITY) : SELECT 절에서 CASE ~ END AS 컬럼명을 이용해서 원하는 컬럼을 만들어 줄 수 있다. SELECT CASE WHEN 기준컬럼 IN (컬럼명 검색조건) THEN "원하는_입력값1" WHE..

    [백준] no1389: 케빈 베이컨의 6단계 법칙

    [백준] no1389: 케빈 베이컨의 6단계 법칙

    문제 * 케빈 베이컨의 6단계 법칙 * : 모든 사람과 두루 가깝게 지내는 사람 구하기 * : 즉, 다른 모든 인원과 몇 다리 걸쳐야 하는지 구한 거리수의 총합이 가장 적은사람이 케빈 베이컨 Input : 1. 첫 째줄에 인원수와 연결 수가 주어짐 2. 둘 째줄부터 연결된 시작점과 끝점이 주어짐 Output : 전체 인원 중, 다른 인원과의 거리의 합이 제일 작은 수인 인원의 위치를 반환 문제 링크 : https://www.acmicpc.net/problem/1389 원리 필자는 BFS를 이용해서 구하는 방법을 사용했다. 풀이방법 [Main 메서드] 1. 모든 인원을 각각 1부터 N번 인덱스에 배치 2. 각 인덱스별로 시작지점을 한 명씩 뽑는 반복문을 돌림 3. 각 인덱스별로 도착지점을 한 명씩 뽑는 이..

    [Programmers] no164668: 조건에 맞는 사용자와 총 거래금액 조회하기

    [Programmers] no164668: 조건에 맞는 사용자와 총 거래금액 조회하기

    문제 -- USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 -- 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 -- 회원 ID, 닉네임, 총거래금액을 조회 -- 결과는 총거래금액을 기준으로 오름차순 정렬 나의 코드 SELECT UGU.USER_ID, UGU.NICKNAME, SUM(UGB.PRICE) AS TOTAL_SALES FROM USED_GOODS_BOARD UGB INNER JOIN USED_GOODS_USER UGU ON UGB.WRITER_ID = UGU.USER_ID WHERE UGB.STATUS LIKE "DONE" GROUP BY UGU.USER_ID HAVING TOTAL_SALES >= 700000 ORDER BY TOTAL_SALES ASC

    [Programmers] no164670: 조건에 맞는 사용자 정보 조회하기

    [Programmers] no164670: 조건에 맞는 사용자 정보 조회하기

    문제 -- USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 -- 중고 거래 게시물을 3건 이상 등록한 사용자의 -- 사용자 ID, 닉네임, 전체주소, 전화번호를 조회 -- 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력 -- 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 출력 -- 결과는 회원 ID를 기준으로 내림차순 정렬 풀이방법 1. CONCAT(원하는_요소1, 원하는_요소2, ... , 원하는 요소_N) AS 원하는_컬럼명 CONCAT(UGU.CITY," ",UGU.STREET_ADDRESS1," ",UGU.STREET_ADDRESS2) AS "전체주소", 2. SUBSTRING(컬럼명 FROM 원하는_시작_문자_인덱스 FOR 필요한_자릿수) CONCAT( SU..

    [Programmers] no164671: 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

    [Programmers] no164671: 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

    문제 -- USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 -- 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회 -- 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬 -- 기본적인 파일경로는 /home/grep/src/ 이며, -- 게시글 ID를 기준으로 디렉토리가 구분되고, -- 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력 -- 조회수가 가장 높은 게시물은 하나만 존재합니다. 풀이방법 1. CONCAT을 사용 : 지정한 low의 값을 합체시켜주는 명령어 SELECT CONCAT("필요시_문자열",원하는_컬럼명1, 원하는_컬럼명2, ... , 원하는_컬럼명n) AS 결과컬럼명 나의 코드 SELECT CONCAT("/home/grep/sr..

    [Programmers] no59038: 최솟값 구하기

    [Programmers] no59038: 최솟값 구하기

    문제 -- 동물 보호소에 -- 가장 먼저 들어온 동물은 -- 언제 들어왔는지 조회 나의 코드 SELECT DATETIME AS "시간" FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1

    [Programmers] no59041: 동명 동물 수 찾기

    [Programmers] no59041: 동명 동물 수 찾기

    문제 -- 동물 보호소에 들어온 동물 이름 중 -- 두 번 이상 쓰인 이름과 -- 해당 이름이 쓰인 횟수를 조회 -- 이름이 없는 동물은 집계에서 제외 -- 결과는 이름 순으로 조회해주세요. 풀이방법 : 중복인 컬럼만 선택해서, COUNT 1. COUNT 2. 이름없는 동물 제외 : WHERE 절에서 IS NOT NULL 사용 3. 중복인 동물만 COUNT : HAVING 절에서 COUNT(컬럼명) > 1 나의 코드 1. NULL 제외 코드 SELECT NAME, COUNT(NAME) AS "COUNT" FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME HAVING COUNT(NAME) > 1 ORDER BY NAME 2. NULL 제외 코드 없이도 가능 SE..

    [Programmers] no59047: 이름에 el이 들어가는 동물 찾기

    [Programmers] no59047: 이름에 el이 들어가는 동물 찾기

    문제 -- 이름에 "EL"이 들어가는 -- 개의 아이디와 이름을 조회 -- 결과는 이름 순으로 조회 -- 단, 이름의 대소문자는 구분하지 않습니다. 풀이방법 -- WHERE 조건1 : 이름에 "EL"이 대소문자 구분없이 키워드 검색 => LOWER(컬럼명) LIKE LOWER("%키워드%") -- WHERE 조건2 : 동물 타입이 개 => 컬럼명 LIKE "키워드" -- 정렬조건 : 이름 => ORDER BY 컬럼명 나의 코드 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE LOWER(NAME) LIKE LOWER("%el%") AND ANIMAL_TYPE LIKE "Dog" ORDER BY NAME