일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LCS 알고리즘
- 다이나믹 프로그래밍
- Python
- 냅색 알고리즘
- Container vs VM
- 최장공통부분문자열
- 동적 계획법
- 수학
- npm start
- 그래프 이론
- 문자열
- Docker 원리
- 깊이 우선 탐색
- 파이썬
- dfs
- 정처기 필기
- 구현
- lazy evaluation
- 모듈러 연산 분배법칙
- 클래스
- 그래프 탐색
- 최장공통부분수열
- 일단 시도
- 그래프탐색
- db replication
- 나는 바보야...
- 배낭 문제
- error:0308010C:digital envelope routines::unsupported
- 너비 우선 탐색
- bfs
- Today
- Total
목록알고리즘 & SQL (30)
Save my data
정답 보기더보기select idfrom ECOLI_DATAwhere parent_id in ( select id from ECOLI_DATA where PARENT_ID in ( select id from ECOLI_DATA where PARENT_ID is NULL ))order by id;핵심 아이디어 :1. 3세대까지면 깊이가 깊지 않으니까, 0세대부터 포함해가며 찾아 내려가면 되지 않을까?2. 약간 dfs같은 접근으로 정답이 나올 때까지 찾아 내려가면 될 것 같다. (근데 재귀문을 몰라서 그냥 나올때까지 where로 조회...)3. parent_id가 NULL인 id를 조회하고, 그것을 부모로 가지는 id를 조회하고, 그것을 부모로 가지는..
정답보기더보기select *from ( select cc.car_id, cc.car_type, truncate(cc.daily_fee * ((100 - discount_rate) / 100) * 30, 0) as fee from CAR_RENTAL_COMPANY_CAR cc join ( select distinct car_id from CAR_RENTAL_COMPANY_RENTAL_HISTORY where car_id not in ( select car_id from CAR_RENTAL_COMPANY_RENTAL_HISTORY where end_date >= '2022-11-01' and st..
처음 푼 코드더보기더보기with tblas ( select ID, rank() over (order by SIZE_OF_COLONY desc) AS R from ECOLI_DATA)select tbl.ID, case when tbl.R / e.CNT 나중에 고친 코드 (개인적으로는 좀 더 깔끔해졌다고 생각함)더보기더보기with tblas ( select ID, rank() over (order by SIZE_OF_COLONY desc) as r, (select count(*) from ECOLI_DATA) as cnt from ECOLI_DATA)select ID, case ..
더보기SELECT B.MEMBER_NAME, A.REVIEW_TEXT, DATE_FORMAT(A.REVIEW_DATE, "%Y-%m-%d") AS REVIEW_DATEFROM REST_REVIEW AJOIN ( SELECT DENSE_RANK() OVER (ORDER BY COUNT(M.MEMBER_ID) DESC) AS RANKING, M.MEMBER_ID, M.MEMBER_NAME FROM MEMBER_PROFILE M JOIN REST_REVIEW R ON M.MEMBER_ID = R.MEMBER_ID GROUP BY M.MEMBER_ID ORDER BY RANKING, REVIEW_DATE, R.REVIEW_TEXT) BON A.MEMBER_ID = B.MEMBER..
https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr dfs로 풀었다. 다른 사람들의 풀이를 보니 대부분 bfs를 사용하였다. 기본 발상은 이러하다. 1. dfs 등의 탐색 알고리즘을 활용해서 각 석유 덩어리들의 크기를 먼저 구한다. 2. 해당 석유 덩어리가 걸치고 있는 수직 라인의 좌표를 기록한다. 3. 해당 좌표에서 시추할 수 있는 석유의 총량을 합한다. import sys sys.setrecursionlimit(1000000) vertical..
https://www.acmicpc.net/problem/2042 2042번: 구간 합 구하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 합을 구하는 횟수이다. 그리고 둘째 줄부터 N+1번째 줄 www.acmicpc.net 문제만 대충 보면 어떻게든 구현할 수는 있는데 시간제한이 있고 해서 특정한 성능이 나오는 알고리즘을 적용해야 하는데, 알고리즘 분류 탭에도 설명되어 있듯 세그먼트 트리를 활용하라고 되어있다. 사실 이 문제는 예전에 알고리즘 특강을 들을 때 유튜브나 인강에서 대충 다루고 넘어갔던 기억이 있다. 위낙 DP, 그래프 위주로 출제가 되니까 그쪽으..
https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net 예전에 풀었던 문제인데 그 때는 단순하게 풀었다. 두 행렬이라고 정해줬으니까 두 번에 나눠서 배열을 만들고, 각각의 원소를 돌면서 각 위치마다 더한 값을 출력하는 식으로 풀었음. import sys n, m = map(int, sys.stdin.readline().split()) a = [] b = [] for _ in range(n): a.append([*map(int, sys.s..
처음에는 아래와 같이 별 생각없이 풀긴 했다. N = int(input()) if N: for i in range(N - 1, 1, -1): N *= i N = str(N)[::-1] cnt = 0 for i in N: if not int(i): cnt += 1 else: break print(cnt) else: print(0) 다만 이것은 파이썬이라 풀리는 방법이고, 아마 다른 언어였으면 오버플로우가 발생해서 풀지 못했을 것이다. 다른 사람은 아래와 같이 풀었다. n = int(input()) def five_count(n): cnt = 0 while n != 0: n //= 5 cnt += n return cnt print(five_count(n)) 왜 5로 나눴을까? 에 대해서 생각하다보니 글이 조..