일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- DirectX
- boj 15724
- boj 21921
- 색종이와가위
- boj 1958
- 지게차와 크레인
- dp
- boj 1074
- lock based queue
- DirectX12
- 프로그래밍공부
- 데이터 체커
- boj 20207
- lock based stack
- boj 11053
- LCS
- 브루트포스
- orthographic projection
- pccp 기출문제 풀이
- tessellation
- 홀짝트리
- PCCE
- pcce 기출문제 풀이
- render target
- boj 6443
- c++
- 2025 프로그래머스 코딩챌린지 1차예선
- 비밀 코드 해독
- boj 22942
- lock free stack
- Today
- Total
목록프로그래밍 공부/프로그래머스 (32)
오구의코딩모험

[SQL 고득점 KIT - SELECT] 조건과 정렬 값 추출은 어렵지 않았지만, 추출한 두 테이블을 UNION ALL로 합치는 게 중요하였다. UNION은 두 개 이상의 SELECT문의 행을 합치는 역할, UNION ALL은 중복을 포함한 모든 값을 합치는 역할이다. 즉, UNION은 중복된 행은 제거하고 하나만 합친다. 위의 문제에서는 동일한 데이터가 없다고하니 UNION, UNION ALL 아무거나 사용해도 괜찮다. 여기서 UNION은 합치려는 두 테이블의 열의 개수가 같아야하는데, OFFLINE_SALE에는 USER_ID가 없으므로 NULL 값인 열을 USER_ID 이름으로 생성해서 합쳐줬다. 끝 ## 온라인 매장 (SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS ..

[SQL 고득점 KIT - SELECT] 중복된 USER_ID, PRODUCT_ID 를 찾는 것으로 문제를 해결 하였다. GROUP BY로 묶어준 후, HAVING 절을 이용하여 중복된 행을 COUNT 해준다. COUNT의 개수가 1이 넘는다면, 동일한 상품을 재구매한 데이터가 될 것이므로 정렬해주면 끝!! SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE GROUP BY USER_ID, PRODUCT_ID HAVING COUNT(*) > 1 ORDER BY USER_ID, PRODUCT_ID DESC

[SQL 고득점 KIT - SELECT] 보통의 SELECT 문제와 유사했지만, 전화번호가 NULL 인 경우를 출력대상에서 제외하는 조건과 생년월일 DATE FORMAT 이 동일해야하는 조건이 있었다. DATE_FORMAT(컬럼명, '%Y-%m-%d') # -> '2023-01-04' # %Y -> '2023' # %y -> '23' # %M -> 'January' # %m -> '01' 소문자와 대문자에 따라서 출력되는 형식도 다르니 알맞게 잘 쓰도록 하자! 다른 형식을 더 알아보고 싶다면 아래의 블로그를 참고! https://velog.io/@donghoim/MySQL-DATETIME-%EC%9B%90%ED%95%98%EB%8A%94-%EC%9C%A0%ED%98%95%EC%9C%BC%EB%A1%9C-..

[SQL 고득점 KIT - SELECT] 상반기 주문 정보 → FIRST_HALR (=F) 아이스크림 정보 → ICECREAM_INFO (=I) 상반기 주문 정보 테이블과 아이스크림 정보 테이블은 FLAVOR를 기본 키, 외래 키로 사용하고 있다. 그러하여 FLAVOR가 같은 경우를 찾아 문제의 조건인 총 주문량 3,000 초과, 아이스크림의 주 성분이 과일인 경우를 WHERE 절을 이용하여 추출해준다. 마지막으로 주문량이 큰 순서대로 조회 ORDER BY 는 오름차순이지만 DESC를 붙여줌으로써 내림차순 정렬을 했다. 끝 SELECT F.FLAVOR FROM FIRST_HALF AS F,ICECREAM_INFO AS I WHERE F.FLAVOR = I.FLAVOR AND F.TOTAL_ORDER>30..

[코딩테스트 고득점 KIT - 완전탐색] 모든 경우의 수를 탐색하기 위해 순열을 사용하였다. "011" 와 "11"은 같은 수 이기 때문에 중복 제거를 위해 answer을 set()로 만들어 주었다. 약수는 곱의 형태로 반복되기 때문에 제곱근+1 까지만 반복문을 실행한다. ex) 24의 약수 = 1, 2, 3, 4, 6, 8, 12, 24 →1*24, 2*12, 3*8, 4*6, 따라서 24는 2로 나눠지면서 12로도 나눠지는 수 나누어진다면, 1과 자기 자신만이 약수로 갖는 소수가 아닌 합성수이다. 합성수가 아닌 수는 소수. 소수를 담은 리스트의 길이를 반환하면 끝. from itertools import permutations import math def solution(numbers): # 중복 제..

[코딩테스트 고득점 KIT - 완전탐색] 순열을 이용하여 모든 피로도 소모 경우의 수를 계산해준다. 소모되어 줄어든 피로도를 HP 변수에 담으며, 남은 피로도인 HP가 탐험할 던전의 "최소 필요 피로도" 보다 높으면 피로도를 소모하여 탐험한다. 탐험 후 HP에서 소모한 피로도만큼 줄여준다. 끝 from itertools import permutations def solution(k, dungeons): answer = 0 ## permutations 순열 라이브러리 for dungeon in list(permutations(dungeons,len(dungeons))): # 탐험한 던전의 수 result = 0 # 남은 피로도 HP = k for root in dungeon: # 요구사항 if root[0]

[코딩테스트 고득점 KIT - 완전탐색] 가로의 길이가 세로의 길이 보다 길거나 같은 조건과 갈색 카펫이 노란 카펫을 둘러싼 것에 초점을 맞추면 쉽게 풀 수 있었다. 그림을 그리며 수식을 이해하는게 빠르다고 느꼈다. yellow가 2라면, 가로의 길이가 길기 때문에 2x1 일 것이며 24인 경우에는, 24x1, 12x2, 8x3, 6x4 으로 나눌 수 있다. yellow의 경우의 수 중, 총 타일 - yellow 과 brown이 같은 경우가 답이다. 총 타일은 그림을 통해 아래의 수식과 같이 표현할 수 있다! 끝 def solution(brown, yellow): for i in range(yellow,0,-1): if yellow % i ==0 and (i+2)*(yellow//i+2)-yellow =..

[코딩테스트 고득점 KIT - 정렬] 논문 인용 수를 역순으로 정렬하여 내림차순으로 탐색한다. 논문의 수인 l 보다 인용 수가 이상인 경우를 filter로 걸러낸 후, 리스트의 길이를 H에 담는다. H의 길이가 l 이상이고, H 이외의 인용 수가 l 이하라면 l이 곧 H-Index! 끝 def solution(citations): answer = 0 citations = sorted(citations,reverse=True) for l in range(len(citations),0,-1): H = len(list(filter(lambda x : x>= l,citations))) if H >= l and len(citations)-H

[코딩테스트 고득점 KIT - 정렬] 리스트 인덱스, 슬라이싱만 잘해주면 어려움 없이 풀 수 있는 문제였다! 끝 def solution(array, commands): return [sorted(array[com[0]-1:com[1]])[com[2]-1] for com in commands]

[코딩테스트 고득점 KIT - 힙] 힙 파트 문제였지만, jobs의 길이가 최대 500이기에 리스트와 정렬로 충분히 풀 수 가 있었다. jobs 배열을 요청시간 기준으로 오름차순으로 정렬하기, 요청시간으로 정렬하고 만약 같다면 소요시간을 기준으로 정렬 테스크 처리 도중에 들어온 테스크들은 요청시간과 상관없이 소요시간 기준으로 정렬, 이 경우가 각 작업의 요청부터 종료까지 걸린 시간의 평균 이 가장 적게 나온다. 테스크 처리 도중이 아닌 경우에는 가장 첫 번째 값 처리 위 3 가지를 고려하여 코드를 작성하였다. 문제 속에서 2번 요구사항을 파악하는게 중요한 문제였지만, 3번 예외사항을 놓치고 있어서 19번 테케에서 통과를 못해 고생했다. 끝 def solution(jobs): # 작업 소요시간, 요청 시점..