전체 글328

(C++) ★Binary Search Intermediate I - 1 Solved★ ★ 1920 수 찾기 ★//1920#include #include #include #include #include #include #include #include #include #include using namespace std;int binary_search(vector &arr, int target){ int start, end; start = 0; end = arr.size()-1; int mid; while(start> N; vector arr1(N); for(int i=0;i> x; arr1[i]=x; } cin >> M; vector arr2(M); for(int i=0;i> y; arr2[i]=y; }.. C, C++/🥈 BOJ 2024. 11. 15.
(C++) ★DP Upper-Intermediate I - 2 Solved★ ★ 2579 계단 오르기 ★//2579#include #include #include #include #include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, stair,tmp; cin >> N; tmp = N; vector dp(N+1, 0); vector stairs = {0}; while(tmp--){ cin >> stair; stairs.push_back(stair); } dp[1]=stai.. C, C++/🥈 BOJ 2024. 11. 15.
(C++) ★Backtracking Intermediate I - 3 Solved★ ★ 15649 N과 M (1) ★//15649#include #include #include #include #include #include #include #include #include #include using namespace std;int N,M;vector ans;void track(){ if((int)ans.size()==M){ for(int i=0;i> N >> M; track(); return 0;}🙃 track() 백트래킹 재귀 함수 돌리기(1) 조건 충족 시, 충족된 vector 배열 내용 출력(2) 조건 미충족 시, 1부터 N까지의 자연수 일일이 돌리면서 ans 배열이 비었거나 해당 자연수가 ans 배열에 없거나 두 조건 중 한 개를 충족하면 push_bac.. C, C++/🥈 BOJ 2024. 11. 15.
(C++) ★Set/Map Upper-Intermediate I - 1 Solved★ ★ 20920 영단어 암기는 괴로워 ★//20920#include #include #include #include #include #include #include #include #include #include using namespace std;int N,M;string word;map freq;vector vocas;bool compare(string a, string b){ if(freq[a] != freq[b]){ return freq[a] > freq[b]; } else{ if(a.size() != b.size()){ return a.size() > b.size(); } else{ retur.. C, C++/🥈 BOJ 2024. 11. 15.
(C++) ★Stack & Queue & Deque Intermediate I - 4 Solved★ ★ 28278 스택 2 ★//28278#include #include #include #include #include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, order, num; cin >> N; stack s; while(N--){ cin>>order; if (order==1){ cin>>num; s.push(num); } else if(orde.. C, C++/🥈 BOJ 2024. 11. 15.
(C++) ★Number Theory Intermediate I - 2 Solved★ ★ 1929 소수 구하기 ★//1929#include #include #include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int M, N; cin >> M >> N; vector sieve(N+1, true); for(int i=2;i👳🏻‍♀️ vector sieve 가변 배열을 만든다. (N+1, true)를 뒤에 붙이면 총 N+1개의 자리가 있고 모두 true로 initialization. 👳🏻‍♀️자연수 N까지의 모든 소수 구하기 (에라토.. C, C++/🥈 BOJ 2024. 11. 15.
(C++) ★Set/Map Intermediate I - 5 Solved★ ★ 10815 숫자 카드 ★//10815#include #include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N,M,card,judge; vector cards; vector judges; map Map; cin >> N; while(N--){ cin >> card; Map.insert({card, true}); } cin >> M; while(M--){ cin >> judge; .. C, C++/🥈 BOJ 2024. 11. 14.
(C++) ★Sorting Intermediate I - 5 Solved★ ★ 1427 소트인사이드 ★//1427#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string N; cin >> N; sort(N.begin(), N.end(), greater()); cout  🚀 내림차순은 sort()의 세번째 인자에 greater를 넣는다. 이 때, 문자열의 각 문자를 내림차순으로 정렬한다면 greater. 만약에 int형 변수가 들어간 array를 내림차순 정렬한다면 greater를 sort()의 세번째 인자로 넣는다... C, C++/🥈 BOJ 2024. 11. 14.
(C++)★Sorting Upper-Beginner I - 1 Solved★ ★ 2750 수 정렬하기 ★//1436#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; vector arr{}; while(N--){ int x; cin >> x; arr.push_back(x); } sort(arr.begin(),arr.end()); for(int x=0;x 👯‍♂️ vector arr{}로 가변 배열 만들고 push_back()으로 업데이트. 이.. C, C++/🥉 BOJ 2024. 11. 14.
(C++)★BF Intermediate I - 1 Solved★ ★ 1436 영화감독 숌 ★//1436#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, n = 666, cnt = 1; string n_string; bool found = false; cin >> N; while(true){ n_string = to_string(n); found = false; for(int x = 0; x  🧕🏼 주어진 숫자를 문자열 string으로 바꾸는 to_stri.. C, C++/🥈 BOJ 2024. 11. 14.
(C++)★Math & Geometry Upper-Beginner I - 1 Solved★ ★ 14215 세 막대 ★//14215#include #include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int arr[3]; cin >> arr[0] >> arr[1] >> arr[2]; sort(arr, arr+3); if((arr[0]+arr[1]) 🤙 sort(arr, arr+3)로 주어진 배열의 길이를 sorting할 수 있다. 🤙 cin >> arr[0] >> arr[1] >> arr[2]로 직접 입력한 숫자 자체를 바로 배열에 넣을 수 있다. .. C, C++/🥉 BOJ 2024. 11. 14.
(C++) ★Number Theory Upper-Beginner I - 3 Solved★ ★ 9506 약수들의 합 ★//9506#include #include #include #include #include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n,total; while(1){ cin >> n; if(n==-1){ break; } total = 1; vector numbers = {}; for(int x=2;x 🧚‍♂️ 가변 배열 vector numbers = {} 만들어 놓고, 약수일 때 numbers.push_back(x); 사용.. C, C++/🥉 BOJ 2024. 11. 14.
(C++) ★Implementation&Simulation Intermediate I - 2 Solved★ ★ 2941 크로아티아 알파벳 ★//2941#include #include #include #include using namespace std;int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string S; int x; cin >> S; vector arr = {"c=","c-","dz=","d-","lj","nj","s=","z="}; for(int i =0 ; i  🤝 vector으로 문자열이 들어간 배열을 생성(#include ) 🤝 find() 함수 안에 크로아티아 변경된 알파벳 문자열을 넣으면, 해당 문자열이 들어가는 위치를 index로 알 수 있다... C, C++/🥈 BOJ 2024. 11. 14.
(C++) ★Implementation Upper-Beginner I - 8 Solved★ ★ 10811 바구니 뒤집기 ★#include #include using namespace std;void swap(int *a, int *b){ int tmp = *a; *a = *b; *b = tmp;}int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M; int* basket = new int[N]; for(int x = 0; x > i >> j; for(int a = 0; a  🤝 바구니 i부터 바구니 j까지 역순으로 넣는 방법은, iterator x가 바구니 i부터 (i+j)/2까지 돌며 양 옆(x와 을.. C, C++/🥉 BOJ 2024. 11. 13.
(C++) ★Implementation Beginner I - 28 Solved★ ★ 1330 두 수 비교하기 ★//1330#include #include using namespace std;int main(int argc, char const *argv[]) { int A, B; cin >> A >> B; if (A > B){ cout ' ★ 9498 시험 성적 ★#include #include using namespace std; int main(int argc, char const *argv[]){ int score; cin >> score; if(score >= 90){ cout = 80){ cout = 70){ cout = 60){ cout ★ 2753 윤년 ★#include #.. C, C++/🥉 BOJ 2024. 11. 13.
(C++) ★Basics I - 16 Solved★ ★ 2557 Hello World ★#include using namespace std;int main(){ cout ★ 1000 A + B ★ / ★ 1001 A - B ★ / ★ 10998 A x B ★#include using namespace std;int main(){ int A, B; cin >> A; cin >> B; cout ★ 1008 A / B ★#include using namespace std;int main(){ double A, B; cin >> A >> B; cout.precision(12); cout  🤝 cout.precision(12)으로 실수 전체를 12자리로 표현하겠다는 뜻.🤝 fixed 써서 12자리로 고정한 숫자로.. C, C++/🥉 BOJ 2024. 11. 13.
💐Operating Systems Fundamentals 2 - Process 1/3 Process & Thread 🚀 Process: 컴퓨터에서 실행중인 하나의 프로그램. 프로그램은 특정 작업을 수행하기 위한 명령어의 집합. 각 프로세스마다 RAM의 독립된 메모리 영역(코드, 데이터, 힙, 스택)을 할당 받는다. 따라서 다른 프로세스의 메모리 영역에 존재할 수 없다(위 프로세스 A 연두색 메모리와 프로세스 B 노란색 메모리가 별도로 존재한다) 🚀 그리고 각 프로세스마다 PCB(프로세스 제어 블록)이 만들어진다. PCB는 RAM 내에서 커널 메모리 영역에 별도 관리되며, kernel mode에서만 접근 가능하다(앞의 포스팅에서 kernel mode와 user mode에 대해서 배웠다. user mode일 때는 프로세스 메모리까지 접근 가능하지만, 실제 중요한 PCB는 접근이 불가능하다.. Computer Science/Basics 2024. 11. 1.
🧑🏻‍💻 LeetCode Medium Collections II - 10 Problems 0054. Spiral Matrix / 0739. Daily Temperaturesclass Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: e,s,w,n = [0,1], [1,0], [0,-1], [-1,0] output = [] rows, cols = len(matrix), len(matrix[0]) visited = [[False] * cols for _ in range(rows)] cnt = 0 x, y = 0,0 dirs = [e,s,w,n] dir_i = 0 while True: .. LeetCode Problems/Medium 2024. 10. 31.
💐 Operating Systems Fundamentals 1 intro🚀 운영체제(OS)란, 하드웨어 위에 설치되어 하드웨어(HW) 계층과 다른 소프트웨어(SW) 계층을 연결하는 SW 계층. 🚀① 컴퓨터 시스템의 자원 관리② 사용자가 컴퓨터를 사용할 수 있는 환경 제공: CPU, 메모리 같은 컴퓨터 자원은 제한적이므로 자원 관리는 매우 중요! 이를 OS가 담당③ 사용자 컴퓨터 간 인터페이스 제공 → 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경 제공ex) 대표적인 OS: Windows, macOS, Linux, Unix 🚀 4가지 목적① 처리능력(throughput) 향상: 자원 관리를 통해 일정 시간 내에 시스템 처리량 향상② 반환시간(turnaround time) 단축: 사용자가 시스템에 요청한 작업 완료 시간 단축③ 사용 가능도(availability.. Computer Science/Basics 2024. 10. 30.
✈️ SQL Programmers Level 2 - 11 Solved 001. 3월에 태어난 여성 회원 목록 출력하기 / 002. 재구매가 일어난 상품과 회원 리스트 구하기SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, "%Y-%m-%d") AS DATE_OF_BIRTHFROM MEMBER_PROFILEWHERE TLNO IS NOT NULL AND MONTH(DATE_OF_BIRTH) = 3 AND GENDER = "W"ORDER BY MEMBER_IDSELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USER_ID, PRODUCT_IDHAVING COUNT(*) > 1ORDER BY USER_ID ASC, PRODUCT_ID DESC ✨(1) DATE_FORMA.. Database/SQL 2024. 10. 24.
✈️ SQL Programmers Level 1 - 27 Solved 001. 평균 일일 대여 요금 구하기 / 002. 흉부외과 또는 일반외과 의사 목록 출력하기SELECT ROUND(AVG(DAILY_FEE), 0) AS AVERAGE_FEEFROM CAR_RENTAL_COMPANY_CARWHERE CAR_TYPE = 'SUV'SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMDFROM DOCTORWHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'ORDER BY HIRE_YMD DESC, DR_NAME ✈️(1) SELECT) 일일 대여 요금 평균값을 가져오므로 AVG(DAILY_FEE)를 SELECT. 소수 첫번째 자리 반올림이므로 ROUND(AVG(DAILY_FEE.. Database/SQL 2024. 10. 17.
🎢 Topology Sort intro🎢 위상 정렬 = 사이클이 없는 방향 그래프(DAG; Directed Acyclic Graph)의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것→ 위상 정렬은 DAG에 대해서만 수행할 수 있다→ 여러 가지 답이 존재할 수 있다. 한 단계에서 큐에 새롭게 들어가는 원소가 2개 이상인 경우(문제에서 오름차순, 내림차순 명시 없다면) 여러 가지 위상정렬 노드 결과가 존재 가능→ 모든 원소를 방문하기 전에 queue가 빈다면 사이클이 존재한다고 판단 가능(사이클에 포함된 원소 중에서 어떠한 원소도 queue에 들어가지 못한다) (또는 queue에서 노드를 뽑을 때마다 뽑은 노드의 개수가 카운트 되어서, 최종 카운트 된 노드의 개수와 그래프 전체 노드의 개수가 같은 지 다른 지 비교로도 알.. Computer Science/Algorithms 2024. 10. 11.
★Sliding Window Upper + Intermediate - 2 Solved★ ★ 21921 블로그 ★import sysinput=sys.stdin.readlineN,X=map(int,input().split())visitors=list(map(int,input().split()))ans,freq,cursum,start=0,0,0,0for i in range(N): if i ans: ans = cursum freq=1 start+=1if ans == 0: print('SAD')else: print(ans,freq,sep='\n') 🏂 전형적인 슬라이딩 윈도우 문제. 고정된 X일 동안의 방문자 수 최댓값 구하는 문제. 여기에 추가로 최댓값 방문자 수 frequency까지 같이 구하는 문제. ans == cursu.. BOJ/🥈 2024. 10. 7.
➡️ Linked List intro➡️ Linked List(연결 리스트)는 배열이라는 자료구조와 비교하며 이해하면 쉽다. 연결 리스트는 배열과 달리 연속된 메모리 공간에 데이터를 저장하지 않고, 각 데이터가 다음 데이터의 위치를 가리키는 방식으로 저장한다. (선형 자료 구조). 이 때의 각 데이터 단위를 node라고 하고, node는 데이터를 저장하고, 다음 노드를 가리키는 참조(주소)를 포함한다. ➡️ 연결 리스트는 아래와 같은 3가지 특징이 존재한다.① 동적 크기: 배열과 달리 연결 리스트는 크기가 고정 x. 따라서 노드를 언제나 추가 / 삭제를 쉽게 할 수 있어 크기가 가변적.② 삽입 / 삭제 쉬움: 배열의 경우 삽입 / 삭제 연산을 진행할 때 해당 위치 이후의 모든 요소를 이동시켜야 하는 번거로움이 있으나, 연결 리스트.. Computer Science/Data Structures 2024. 9. 26.
🌉 Monotonic Stack intro🌉 stack의 (파이썬 코드 기준 append()와 pop()) 연산이 O(1)임을 감안해 한 곳에서 넣고 빼고를 반복하는 과정에서 stack의 원소가 오름차순 또는 내림차순을 유지하게끔 하는 stack을 만드는 유형을 'monotonic stack' 유형이라고 한다. 🌉 아래 예시와 같이 내림차순으로 이루어진 stack을 유지하면서, 새로운 원소 6이 들어올 때 pop() 연산 4번 진행 후 빠르게 append() 진행🌉 오름차순 또는 내림차순 순서 stack으로 업데이트 되는 과정에서 현재 원소보다 오른쪽 또는 왼쪽 원소 중 가장 가까이 있는 원소 최대/최솟값 구하기 또는 현재 원소보다 오른쪽 또는 왼쪽 원소 중 가장 가까이 있는 원소의 위치 구하기가 대표 유형으로 많이 나온다. 🌉.. Computer Science/Data Structures 2024. 9. 23.
🧑🏻‍💻 LeetCode Medium Collections I - 20 Problems 0300. Longest Increasing Subsequence / 0053. Maximum Subarrayclass Solution: def lengthOfLIS(self, nums: List[int]) -> int: length = len(nums) dp = [1]*length for x in range(1,length): for y in range(0,x): if nums[y] class Solution: def maxSubArray(self, nums: List[int]) -> int: ans,curmax=-10001,0 for i in range(len(nums)): .. LeetCode Problems/Medium 2024. 9. 9.
🫂 Prefix Sum 1D Prefix Sum✊🏻 구간 합 문제는 연속적으로 나열된 N개의 수가 있을 때, 특정 구간의 모든 수를 합한 값을 계산하는 문제 유형을 뜻한다. ✊🏻 예를 들면, 5개의 데이터로 구성된 수열 {10, 20, 30, 40, 50}이 있다고 가정했을 때, 2번째 수부터 4번째 수까지의 합은 20 + 30 + 40인 90이 된다. ✊🏻 N개의 정수로 구성된 수열이 있고, M개의 query 정보가 주어진다. 각 query는 left와 right로 구성. 각 query에 대하여 [left, right] 구간에 포함된 데이터들의 합을 출력해야 한다. (수행 시간 제한은 O(N+M)) → 위 예와 접목하자면, 5개의 데이터 (N=5)로 구성된 수열에서 매번 새로운 query 구간마다 해당 합을 구한다면 시.. Computer Science/Algorithms 2024. 9. 6.