https://www.acmicpc.net/problem/10975 #문제 간단 정리 구현 + 그리디라고 볼 수 있다. #문제 해결 방법 우선 문제를 읽고 각 입력으로 숫자가 주어졌을 때 덱을 어떻게 최소한으로 써야되는지 알아내는 문제이다 우선 입력은 3 6 0 9 5 4 이렇게 주어지고 이 숫자들을 정렬했을 때는0 3 4 5 6 9 임을 알 수 있는데 여기서 처음에 주어지는 3과 6을 보면 0 3 4 | 5 6 9 이렇게 각자 절반에 절반씩 띄워진 숫자라는 걸 알 수 있다. 여기서 만약에 입력이 다르게 온다고 생각을 해보면 예를 들어서 0 3 4 5 6 9 로 주어진다고 생각해보면 정렬했을때도 연속되기 때문에 하나의 덱에 앞뒤로 값을 넣으면 되기 때문에 당연히 덱을 하나 더 만들 필요가 없다는 걸 알..
#include #include using namespace std;const int ROOT = 1;int unused = 2;const int MX = 10000 * 500 + 5; // 최대 등장 가능한 글자의 수bool chk[MX];int nxt[MX][26];int c2i(char c) { return c - 'a';}void insert(string& s) { int cur = ROOT; for (auto c : s) { if (nxt[cur][c2i(c)] == -1) nxt[cur][c2i(c)] = unused++; cur = nxt[cur][c2i(c)]; } chk[cur] = true;}bool find(str..
1. 다항식 롤링 해시란?다항식 롤링 해시는 문자열의 각 문자를 일정한 베이스(예: 131, 257 등) 를 이용해 하나의 정수로 변환하는 방식입니다.예를 들어, 문자열 s에 대해 해시값을 아래와 같이 계산할 수 있습니다.하지만 실제 구현에서는 오버플로우와 연산 효율을 고려하여 보통 누적 방식으로 계산합니다.코드로 살펴보기const int TABLE_SIZE = 100003; // 큰 소수를 사용하는 것이 좋습니다.int getHash(const string &s) { unsigned long long hash_val = 0; for (char c : s) { hash_val = hash_val * 131 + c; // 131은 베이스로 자주 사용되는 소수입니다. } ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV-Un3G64SUDFAXr&categoryId=AV-Un3G64SUDFAXr&categoryType=CODE&problemTitle=2948&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com #문제 간단 정리해쉬문제다 #문제 해결 방법unordered map 으로 풀 수 있지만..해쉬를 잘 알아볼겸 해쉬를 직접 구현한 코드로 올린 #전..
https://school.programmers.co.kr/learn/courses/30/lessons/164668 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 조건에 맞는 사용자와 총 거래금액 조회하기 SELECT u.USER_ID, u.NICKNAME, SUM(b.PRICE) AS TOTAL_SALESFROM USED_GOODS_USER uJOIN USED_GOODS_BOARD b ON u.USER_ID = b.WRITER_IDWHERE b.STATUS = 'DONE'GROUP BY u.USER_ID, u.NICKNAMEHAVING SUM(b..
있었는데요 없었습니다 https://school.programmers.co.kr/learn/courses/30/lessons/59043datetime 은 비교연산자로 비교 가능하다-- 코드를 입력하세요SELECT ai.animal_id , ai.nameFROM ANIMAL_INS as ai join ANIMAL_OUTS ao on ai.animal_id = ao.animal_idwhere ai.datetime > ao.datetimeorder by ai.datetime asc; 오랜 기간 보호한 동물(1)https://school.programmers.co.kr/learn/courses/30/lessons/59044 left join 으로 풀기 SELECT ai.name AS NAME, ai.da..
#include using namespace std;/** * @brief ans 변수를 사용하는 lower_bound * @param arr 오름차순 정렬된 배열 * @param val 찾고자 하는 값 * @return arr 내에서 (arr[idx] >= val)을 만족하는 가장 작은 idx * (없으면 arr.size() 리턴) */int my_lower_bound_ans(const vector& arr, int val) { int l = 0; int r = (int)arr.size() - 1; int ans = (int)arr.size(); // 없을 경우 기본값 while (l = val) { ans = mid; // 조건 만족..
1. 크루스칼(Kruskal) 그래프 표현: 보통 간선 리스트 형태로 가지고 있습니다.핵심:모든 간선을 비용 기준으로 오름차순 정렬유니온 파인드(Union-Find)로 사이클 확인비용이 작은 간선부터 차례대로 MST에 추가#include using namespace std;struct Edge { int u, v; // 간선을 잇는 두 정점 long long cost; // 간선의 가중치};// 전역 혹은 클래스 내 Union-Findstatic const int MAXN = 100000; // 정점 최대 개수 예시 (원하는 만큼)int parentSet[MAXN];int rankSet[MAXN];// Union-Find find 함수(경로 압축)int Find(int x) { ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15StKqAQkCFAYD&categoryId=AV15StKqAQkCFAYD&categoryType=CODE&problemTitle=%ED%95%98%EB%82%98%EB%A1%9C&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com #문제 간단 정리MST를 만드는 문제 #문제 해결 방법크루스칼 프림 둘다사용 가능한데 나는 유니온파인드 ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV-Tj7ya3jYDFAXr SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com #문제 간단 정리힙구현#문제 해결 방법힙을 구현하라는 의미의 문제지만... C++ 에 우선순위큐로 쉽게 구현할수 있기에.. #전체 코드#include #include #include #include #include #include using namespace std;int main(int argc, char** argv) { ios::sync_with_stdio(false); cin.tie..