본문 바로가기

프로그래머스8

[SQL] YEAR(), MONTH(), DAY() | 년, 월, 일 데이터 추출 | 프로그래머스 대여 기록이 존재하는 자동차 리스트 구하기 📌 YEAR(), MONTH(), DAY() 날짜 형식의 데이터에서 년/월/일을 추출하고 싶을 때 사용할 수 있다. 사용법은 각 함수에 날짜 형식의 데이터를 넣어주면 된다. YEAR(날짜 데이터) MONTH(날짜 데이터) DAY(날짜 데이터) [ 사용 예시 | (프로그래머스) 대여 기록이 존재하는 자동차 리스트 구하기 ] SELECT A.CAR_ID FROM CAR_RENTAL_COMPANY_CAR A inner join CAR_RENTAL_COMPANY_RENTAL_HISTORY B WHERE A.CAR_ID = B.CAR_ID AND A.CAR_TYPE = '세단' AND MONTH(B.START_DATE) = 10 GROUP BY A.CAR_ID ORDER BY A.CAR_ID DESC https:.. 2023. 5. 16.
[SQL] ROUND ▫️ CEILING ▫️ DATEDIFF | 소수점 반올림 | 날짜 차이 | 프로그래머스 자동차 평균 대여 기간 구하기 📌 ROUND ROUND 함수는 해당 자리 수 까지 반올림하는 함수이다. 사용법은 매우 간단하다. ROUND(값, 반올림 자릿수) 위의 형식과 같이 반올림 하고자 하는 값과, 반올림 자릿수를 차례로 넣어주면 된다. 반올림 자릿수에 음수값을 넣어주면 정수 반올림도 가능하다. SELECT ROUND(123.456, 0), -- 소수점 0번째까지 반올림, 123 ROUND(123.456, 1), -- 소수점 1번째까지 반올림, 123,5 ROUND(123.456, 2), -- 소수점 2번째까지 반올림, 123,46 ROUND(129.456, -1), -- 정수 1번째까지 반올림, 130 ROUND(123.456, -2), -- 정수 2번째까지 반올림, 100 📌 CEILING CEILING 함수는 소수점 이하.. 2023. 5. 9.
프로그래머스 양궁대회 | 2022 KAKAO BLIND RECRUITMENT 📌 문제 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원회는 한 선수의 연속 우승보다는 다양한 선수들이 양궁대회에서 우승하기를 원합니다. 따라서, 양궁대회 운영위원회는 결승전 규칙을 전 대회 우승자인 라이언에게 불리하게 다음과 같이 정했습니다. 어피치가 화살 n발을 다 쏜 후에 라이언이 화살 n발을 쏩니다. 점수를 계산합니다. 과녁판은 아래 사진처럼 생겼으며 가장 작은 원의 과녁 점수는 10점이고 가장 큰 원의 바깥쪽은 과녁 점수가 0점입니다. 만약, k(k는 1~10사이의 자연수)점을 어피치가 a발을 맞혔고 라이언이 b발을 맞혔을 경우 더 많은 화살을 k점에 맞힌 선수가 k 점을 가.. 2023. 5. 6.
[SQL] max, min | 최댓값을 가진 row 조회 | 프로그래머스 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 📌 max, min max 함수는 말그대로 최댓값을 찾을 때 사용한다. min 함수도 말그대로 최솟값을 찾을 때 사용한다. sql문을 작성할 때 보통 where절과 함께 많이 사용되는데, 아래의 코드처럼 작성할 수 있다. WHERE USED_GOODS_BOARD.VIEWS = (SELECT max(USED_GOODS_BOARD.VIEWS) from USED_GOODS_BOARD) [ 사용 예시 | (프로그래머스) 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 ] SELECT CONCAT("/home/grep/src/", USED_GOODS_FILE.BOARD_ID, "/", USED_GOODS_FILE.FILE_ID, USED_GOODS_FILE.FILE_NAME, USED_GOODS_FILE... 2023. 5. 4.
프로그래머스 두 큐 합 같게 만들기 | 자바 📌 알고리즘 선택 별다른 알고리즘은 없고, 구현 문제라고 생각한다. 📌 풀이 정직하게 큐의 사이즈만큼 반복해서 풀이하면 시간초과가 난다. 그렇기에 조금 다르게 접근할 필요가 있다. 한쪽 큐의 합을 (두 큐의 합 / 2)로 만들어주면 어떨까? 한쪽 큐의 합이 (초기의 두 큐의 합 / 2)보다 크면 poll하여 다른 큐에 add 해주고, 작으면 다른 큐에서 poll 하여 한쪽 큐에 add 해주면 된다. 반복문은 한쪽 큐의 합과 (초기의 두 큐의 합 / 2)이 같아질 때까지 반복하면 되는데, 어떤 방식으로도 두 큐의 합을 같게 만들 수 없는 경우가 있을 수 있기에, 초기의 한쪽 큐의 길이의 3배 만큼 반복문을 반복해주고, 그래도 두 큐의 합이 같지 않다면 -1을 리턴해주자. 여기서, 왜 3배일까? 대강 최악의.. 2023. 5. 3.
프로그래머스 단어변환 | JAVA 📌 알고리즘 선택 미로찾기랑 비슷한 원리로, 경로를 기억했다가 되돌아올 필요가 있기에 DFS로 시도했다. 📌 풀이 전반적인 풀이의 흐름은 다음과 같다. 1. 한글자만 다른 단어를 찾는다. 2. 해당 단어를 visited=true 처리한다. 3. cnt를 1 증가시키고, 해당 단어를 begin으로 설정하여 dfs 탐색을 해준다. 4. 모든 경우에 대해 탐색하기 위해 visited=false 처리한다. 5. begin과 target이 같은 경우에 answer=cnt를 리턴한다. 📌 코드 import java.util.*; class Solution { static boolean[] visited; static int answer = 0; public int solution(String begin, Strin.. 2023. 4. 27.