일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- stoi
- 알고리즘
- 그래프
- 이분탐색
- 우선순위큐
- vector
- Set
- DFS
- 유클리드호제법
- 프로그래머스
- int
- 문자열
- 에라토스테네스의 체
- 깊이우선탐색
- BFS
- C++
- 분할정복
- 오블완
- map
- 다이나믹프로그래밍
- DP
- 백트래킹
- 정렬
- 티스토리챌린지
- 백준
- priority_queue
- Sort
- N과M
- 배열
- 최소공배수
- Today
- Total
목록전체 글 (220)
안녕 세상아,
SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USER_ID, PRODUCT_IDHAVING COUNT(PRODUCT_ID) > 1ORDER BY USER_ID ASC, PRODUCT_ID DESC1. GROUP BY -> 같은 값을 가진 행들을 하나의 그룹으로 묶는 역할2. HAVING -> GROUP BY가 만든 그룹 필터링
SELECT FLAVORFROM FIRST_HALFORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC총 주문량 기준으로 내림차순 정렬(DESC), 출하번호 기준으로 오름차순 정렬(ASC)
https://school.programmers.co.kr/learn/courses/30/lessons/131118 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. 리뷰 평균점수는 소수점 세번째 자리에서 반올림 -> ROUND 사용2. 평균점수 기준으로 내림차순 정렬 -> 평균점수 내기 위해 GROUP BY 사용하기3. 평균점수가 같으면 즐겨찾기 순으로 내림차순 정렬 REST_ID 기준으로 JOIN-> REST_ID가 두 테이블에 있기 때문에 INNER JOIN 해준다. SELECT RI.REST_ID, RI.REST_NAME, RI.FOOD_TYPE, RI.FAVORITES, RI.ADDRESS, ..
https://school.programmers.co.kr/learn/courses/30/lessons/131112 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSQL 오랜만에 풀어서 가장 쉽고 기초적인 문제로! SQL SELECT의 가장 기본 문법은 SELECT FROM WHERE ORDER BY 이다. 이를 맞춰서 쿼리문을 작성해주면 된다. 이 문제에서 배워갈 점은 테이블에서 강원도에 위치한 식품공장 기준으로 쿼리문을 작성하는 것이다. 이를 위해 WHERE 조건절에서 LIKE를 사용하여 조건을 추가하면 된다. 이때, '강원도%' 는 강원도가 먼저 나온 후 그 이후에 아무거나 나와도 된다는 뜻이다..
https://www.acmicpc.net/problem/1260 BFS와 DFS의 기본적인 문제이다. 템플릿으로 사용해도 될듯..값을 입력할 때 양방향 간선으로 고려해야한다. 또한, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문 한다는 조건을 생각해서 정렬한다. #include #include #include #include #include using namespace std;int n, m, v;bool isVisited[1001] = { false };vector graph[1001];void reset() { for (int i = 1; i q; q.push(start); isVisited[start] = true; while (!q.empty()) { int ..
https://www.acmicpc.net/problem/1654이분탐색으로 풀 수 있는 문제이다.초기값(start)는 1로 두고, 마지막값(end)은 sort한 벡터 마지막 값으로 설정한다. 이분탐색을하기 위해서는 무조건 오름차순으로 정렬하고 해야한다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이기 때문에 int값은 long long타입으로 설정해야한다. 또한, 최대 길이를 구해야하기 때문에 sum==n이더라도 계속해서 값을 갱신해서 저장을 해야한다. #include #include #include using namespace std;int main() { int k, n; cin >> k >> n; vector v; for (int i = 0; i > k; ..
https://www.acmicpc.net/problem/2776가장 먼저 생각해볼 수 있는 방법은 2중 for문이다. 하지만..각각의 수첩1과 수첩2의 범위가 최대 1,000,000이기 때문에 시간초과가 된다. 그러면 생각할 수 있는 방법은 두가지이다. 첫째, 이분탐색둘째, 해시를 사용하는 것이다. (set) 나는 이 중 이분탐색을 이용해서 풀었다. binary_search를 사용해서 그냥 풀어도 되지만 오랜만에 이분탐색을 풀어봤기 때문에 직접ㅂ 함수를 만들어서 풀어봤다. 코드를 보면 알 수 있듯이 이분탐색을 위해서는 가장 먼저 오름차순 정렬을 해야한다. 그 후, left, right, mid 값을 설정한 후 target값과 비교하면서 계산해주면 된다. #include #include #include..
https://www.acmicpc.net/problem/1436풀이)'666'만 있으면 종말의 수 이기 때문에 1000으로 나누고 666이 나오면 된다.만약 바로 666이 나오지 않으면(큰 수일 경우) 10을 나눠준다.10을 계속 나눠주다가 666보다 작아지면 while문을 break 해준다.while문을 끝낸 후 i++ 하면서 계속 for문 돌리다가 주어진 n과 cnt가 같으면 i를 출력해준다.#include using namespace std;int main() { int n; cin >> n; int cnt = 0; for (int i = 666;; i++) { int tmp = i; while (tmp >= 666) { if (tmp % 1000 == 666) { cnt++; ..
stable_sort동일한 키 값을 가지는 요소들의 입력 순서 유지ex) [3,1,4,1] 에서 첫번째 1과 두번쨰 1의 순서는 정렬 후에도 바뀌지 않음내부적으로 병합 정렬 기반 알고리즘 사용평균 및 최악 시간 복잡도 : 0(N log^2 N)병합정렬 특성상 비교횟수 많음추가 메모리 많이 사용 sort내부적으로 IntroSort 기반 알고리즘퀵정렬 + 힙정렬 + 삽입정렬 의 조합평균 및 최악 시간 복잡도 : 0(N log N) sort, stable_sort 비교 예제#include #include #include using namespace std;struct Person { int age; string name;};bool cmp(const Person& a, const Person& b)..
https://www.acmicpc.net/problem/108141. vector pair 사용해서 값 받아오기2. stable_sort 사용해서 정렬동일한 키값을 가지는 요소들의 입력 순서 유지3. cmp 함수 만들어서 first값만 비교#include #include #include using namespace std;bool cmp(pair a, pair b) { return a.first > v; int N; cin >> N; for (int i = 0; i > x >> y; v.push_back(make_pair(x, y)); } stable_sort(v.begin(), v.end(),cmp); for (int i = 0; i