목록Development/Algorithm & Coding Test (189)
컴공생의 다이어리
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 - MySQL SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT FROM ( SELECT SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT FROM ONLINE_SALE UNION ALL SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT FROM OFFLINE_SALE ) T WHERE SALES_DATE LIKE '2022-03%' ORDER BY SALES_DATE, PRODUCT_ID, USER_ID; https://school.programm..
[프로그래머스] 성분으로 구분한 아이스크림 총 주문량 - MySQL SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF INNER JOIN ICECREAM_INFO ON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR GROUP BY INGREDIENT_TYPE ORDER BY TOTAL_ORDER ASC; https://school.programmers.co.kr/learn/courses/30/lessons/133026 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmer..
[프로그래머스] 개인정보 수집 유효기간 - 파이썬(Python) def solution(today, terms, privacies): answer = [] terms_dic = {t[0]: int(t[2:]) * 28 for t in terms} # 약관 코드를 key값으로, 유효기간을 value값으로 하는 dict today = list(map(int, today.split('.'))) today = today[0] * 12 * 28 + today[1] * 28 + today[2] # 오늘 날짜를 일 단위로 변환 for idx in range(len(privacies)): day, code = privacies[idx].split(' ') # 개인정보 수집일과 약관 코드를 분리 day = list(ma..
[프로그래머스] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 - MySQL SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(HISTORY_ID) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE CAR_ID IN ( SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE DATE_FORMAT(START_DATE,'%Y-%m') BETWEEN '2022-08' AND '2022-10' GROUP BY CAR_ID HAVING COUNT(CAR_ID) >= 5 ) AND DATE_FORMAT(START_DATE,'%Y-%m') BETWEEN '2022-08' AN..
백준 16928번 : 뱀과 사다리 게임 (문제 바로가기) 내 코드 import sys from collections import deque input = sys.stdin.readline N, M = map(int, input().split()) # N: 사다리의 개수, M: 뱀의 개수 board = [0] * 101 # 사다리와 뱀의 위치를 저장할 리스트 for _ in range(N + M): x, y = map(int, input().split()) board[x] = y # 사다리와 뱀의 위치를 저장 visited = [0] * 101 # 방문 여부를 저장할 리스트 queue = deque([1]) # 시작점 while queue: x = queue.popleft() if x == 100: # 도..
백준 16954번 : 움직이는 미로 탈출 (문제 바로가기) 내 코드 import sys from collections import deque input = sys.stdin.readline wall_pos = set() # 벽 위치 for i in range(8): temp = input().rstrip() for j in range(8): if temp[j] == '#': wall_pos.add((i, j)) queue = deque([(7, 0)]) # 캐릭터 시작 위치 넣기 result = 0 direction = [(i, j) for i in range(-1, 2) for j in range(-1, 2)] # 이동할 수 있는 모든 방향 while queue and wall_pos: temp = s..
백준 16637번 : 괄호 추가하기 (문제 바로가기) 내 코드 N = int(input()) data = list(map(lambda x: int(x) if x.isdigit() else x, input())) result = -int(1e9) def calculate(num1, num2, s): # 연산자 s에 따라 계산처리 if s == '+': return num1 + num2 elif s == '-': return num1 - num2 elif s == '*': return num1 * num2 def dfs(idx, prev): global result if idx >= N: # 연산이 끝났을 때 result = max(result, prev) # 최댓값 갱신 return if idx + 3 <..
백준 17779번 : 게리맨더링 2 (문제 바로가기) 내 코드 import sys input = sys.stdin.readline def simulation(x, y, d1, d2): section = [0] * 5 # 구역별 인구 수 temp_c = y for r in range(x + d1): # 1구역 인구 합 구하기 if r >= x: temp_c -= 1 section[0] += sum(data[r][0:temp_c + 1]) temp_c = y - d1 - 1 for r in range(x + d1, n): # 3구역 인구 합 구하기 section[2] += sum(data[r][0:temp_c + 1]) if r < x + d1 + d2: temp_c += 1 temp_c = y + 1 fo..
백준 2023번 : 수들의 합 5 (문제 바로가기) 내 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class baekjoon_2023 { private static int N; private static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLin..
[프로그래머스] 자동차 대여 기록 별 대여 금액 구하기 - MySQL WITH RENT_INFO AS ( SELECT HISTORY_ID, DATEDIFF(END_DATE, START_DATE) + 1 AS RENT_DAYS, DAILY_FEE, CAR_TYPE, CASE WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 90 THEN '90일 이상' WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 30 THEN '30일 이상' WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 7 THEN '7일 이상' ELSE '' END AS DURATION_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY..