본문 바로가기

알고리즘 공부 및 문제 풀이

(317)
[pro] 프로그래머스 SQL level4 년, 월, 성별 별 상품 구매 회원 수 구하기 - GROUP BY [문제] https://school.programmers.co.kr/learn/courses/30/lessons/131532 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 1. 년, 월, 성별로 GROUP BY 하여 집계. GENDER가 NULL인 경우 제외. 2. 주의할 점은 같은 회원이 서로 다른 아이템을 동일한 년, 월에 구매할 경우 중복 집계로 처리 되어야 한다. 따라서 COUNT 시에 DISTINCT(U.USER_ID) 가 필수적임에 주의! [코드] SELECT YEAR(SALES_DATE) AS YEAR, MONTH(SALES_DATE..
[pro] 프로그래머스 SQL level4 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 - JOIN [문제] https://school.programmers.co.kr/learn/courses/30/lessons/157339 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 1. CAR_TYPE이 세단이거나 SUV 2. 11월 동안 대여 가능해야 한다. 3. DURATION_TYPE이 '30일 이상' 인 경우, 30일 동안의 대여비가 50만원 이상 200만원 미만이어야 한다. 계산한 후의 결과값인 FEE를 이용하려면 HAVING을 써야 한다. WHERE를 이용할 경우 FEE값이 계산되지 않아 이를 인식하지 못함에 주의! [코드] SELECT T1...
[pro] 프로그래머스 SQL level2 카테고리 별 상품 개수 구하기 - String [문제] https://school.programmers.co.kr/learn/courses/30/lessons/131529 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SUBSTRING_INDEX(field 명, delimeter, delimeter index) 함수를 이용해서 문자열을 split 할 수 있다. 예문 결과 SUBSTRING_INDEX('10-100-1000', '-', 1) 10 SUBSTRING_INDEX('10-100-1000', '-', 2) 10-100 SUBSTRING_INDEX('10-100-1000', '-', 3..
[boj] 백준 2503 숫자 야구 (Java) - 완전 탐색 [문제] https://www.acmicpc.net/problem/2503 [풀이] 숫자는 중복될 수 없고 0이 들어갈 수 없다. 따라서 123~987 까지 중복되는 숫자와 0이 들어가는 숫자를 제외한 모든 숫자에 대해서 n개의 숫자와 비교한다. n개의 숫자에 대해서 strike와 ball의 개수가 모두 일치한다면 가능성이 있는 수이므로 answer를 증가시킨다. [코드] package 브루트포스; import java.io.*; import java.util.*; public class boj_2503_숫자야구 { static int n; static List list; static int answer; public static void main(String[] args) throws Exception..
[boj] 백준 14620 꽃길 (Java) - 완전탐색(백트래킹) [문제] https://www.acmicpc.net/problem/14620 [풀이] 기본 백트래킹을 이용한 완전 탐색 문제. [코드] package 브루트포스; import java.io.*; import java.util.*; public class boj_14620_꽃길 { static int n; static int[][] board; static boolean[][] visited; static int answer = Integer.MAX_VALUE; static int[] dr = {0, 0, 1, -1}; static int[] dc = {1, -1, 0, 0}; public static void main(String[] args) throws Exception{ //진아가 꽃을 심기 위해 ..
[pro] 프로그래머스 SQL level3 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 - GROUP BY [문제] https://school.programmers.co.kr/learn/courses/30/lessons/151139 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 1. 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서. 서브 쿼리를 이용해 해당 조건에 맞는 자동차 ID만 추출 2. 특정 월의 총 대여횟수가 0인 경우는 제외. HAVING 절 이용. [코드] SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(CAR_ID) AS RECORDS ..
[pro] 프로그래머스 SQL level3 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 - GROUP BY [문제] https://school.programmers.co.kr/learn/courses/30/lessons/157340 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] IF 조건문을 이용한다. IF(조건문, 참일 때의 값, 거짓일 때의 값) 그 외의 조건문 - IFNULL(column_name, value) - ISNULL(column_name, value) - CASE WHEN value1 THEN result1 WHEN value2 THEN result2 … [ELSE else_result] END [코드] SELECT CAR_ID, IF..
[pro] 프로그래머스 SQL level3 즐겨찾기가 가장 많은 식당 정보 출력하기 - GROUP BY [문제] https://school.programmers.co.kr/learn/courses/30/lessons/131123 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] GROUP BY와 서브쿼리를 이용한다. 이때 그냥 HAVING MAX(FAVORITES) 을 하게 되면 이미 GROUP BY를 한 결과값(아무 조건이 없을 때 가장 상단에 위치한 것이 선택됨) 중에서 HAVING 을 적용하는 것이기 때문에 정답이 안된다!! [코드] SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO ..