목록기록/알고리즘 스터디 알튜비튜 5기✨ (11)
컴공댕이 공부일지

일단 먼저.. 6개월 전의 나.. c++ 도 낯설고 자료구조도 못배웠던 시절이라 참.. 끙끙거리고 있는게 애잔하군 https://somde.tistory.com/98 [ 정수론 ] 필수 과제 해결 📚유클리드 호제법, 아리스토테네스의 체 백준 1735 최대공약수를 구해 연산하는 문제. 이번 주차에서 배운 유클리드 호제법을 재귀함수의 형태로 구현하였다! #include using namespace std; //최대공약수 구하는 함수 int getGcdRecur(int a, int b) { if ( somde.tistory.com 2024.3월 알튜비튜 5기를 수료하고 6기를 수강하는 자의 코드 수정 구현 문제 쉽던데.. 이땐 왜 못풀었지...? ㅋㅋㅋ ㅠㅠ 이땐 자료구조 수강 전이라 원형을 배열로 구현할 방..
보호되어 있는 글입니다.

2023. 11. 3 일자 이화여대 알고리즘 튜터링 프로그램, 알튜비튜의 수업 내용 정리본입니다. 🔍이분 탐색 ( BinarySearch )이란 ? 업다운 게임을 생각하면 된다 ! 중간값과 찾아야하는 값을 비교해가며, 배열의 크기를 절반으로 줄이며 답을 찾는 알고리즘으로 반복문으로 구현하며, 시간 복잡도는 O(logN) 알고리즘 사용 전, 반드시 배열을 정렬해야 한다 !! +) 이분 탐색의 대상 원소들을 트리에 넣으면 바이너리서치트리(binary search tree) ! BST를 중위 순회 (inorder) 하면 정렬된 순서의 배열이 나온다. 이미지 출처 : https://velog.io/@reyang/C-%EC%84%A0%ED%98%95-%ED%83%90%EC%83%89-%EC%9D%B4%EC%A7%..
보호되어 있는 글입니다.
✅우선순위 큐 ☑️ 우선순위가 높은 데이터가 먼저 나옴 - 큐(Queue) : 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) - 우선순위 큐(Priority Queue) : 큐와 달리, 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조이다. ( like. 롯데월드 매직패스 ) 큐를 활용한 필수과제 문제 ! [ 백준 14235 크리스마스 선물 ] #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n,a; priority_queue pq; //큰 것 부터 나오는 less cin >> n; while(n--) { ci..
하아아아아........... 진짜 존나모르겠다개열받네이새벽에이것만몇시간째야진짜하앙아아아ㅏ아 내일1교시인데 새벽 3시인데 안풀려 나는 개멍청이야 실버 구현도 못푸는 개 허접이야 하아............... ㅎㅎㅎ... 결국 해내다. 맑은 정신에 푸니 금방 풀렸던... 멘탈 잘 잡아.... #include using namespace std; bool similarWord(string word, string str) { //두 단어의 알파벳 갯수 저장 int alpW[26]={0}; int alpS[26]={0}; //두 단어의 알파벳 갯수 카운트 for(int i=0; i1) { string str; cin >> str; if(similarWord(word, str)) { cnt++; } n--; }..
꽃을 심을 좌표를 찾는 과정이 매우매우... 험난했다..... 몫과 나머지를 활용하는 방법도 있는데 일단은 무식하게 6중 반복문으로 풀어보았다! #include #include using namespace std; int groundCost[10][10]; //꽃 심는 좌표가 주어지면, 그 꽃의 가격 구하는 함수. int calCost(int x, int y ) { int cost=groundCost[x][y] +groundCost[x-1][y] +groundCost[x+1][y] +groundCost[x][y-1] +groundCost[x][y+1]; return cost; } //꽃 심는 좌표 3개가 주어지면, 죽는지 여부 판별하는 함수. bool death(int x[3], int y[3]) { /..
✅ 브루트포스 알고리즘 ☑️ 완전 탐색 말 그대로 정말 모든 경우의 수를 다 보는 것! 필수 과제 1 #include #include using namespace std; int BF(int n, string& k, string& d, vector& moveD) { //주소값으로 전달해 함수에서 k,d의 값을 변형시킴 string lastK, lastD; //움직이기 전 k,d의 위치 for(int i=0; i> k >> d >> n; for(int i=0; i> temp; moveD.push_back(temp); } //연산 BF(n, k, d, moveD); //출력 cout 0) { if(temp%1000==NUM) { //끝자리 666이면 카운트 +1 cnt++; //종말의 수다! break; }..
백준 1735 최대공약수를 구해 연산하는 문제. 이번 주차에서 배운 유클리드 호제법을 재귀함수의 형태로 구현하였다! #include using namespace std; //최대공약수 구하는 함수 int getGcdRecur(int a, int b) { if (b == 0) { return a; } return getGcdRecur(b, a%b); } int main() { int u1, u2, d1, d2; //입력받을 분자와 분모 int uRes, dRes; //최종 분자와 분모 //입력 cin >> u1 >> d1 >> u2 >> d2; //Part.1 uRes = u1*d2 + u2*d1; dRes = d1 * d2; //일단 더한 후(Part.1), 이 값을 기약분수로 정리(Part.2) //P..

✅ 버블 정렬 / Bubble sort O(n^2) ☑️ 인접한 두 원소를 비교해 swap ! (오름차순 기준) 가장 큰 원소부터 오른쪽 끝에 배치 버블 정렬 C++ 코드 void bubbleSort(vector& arr) { for(int i=0; i 해결된 조각들을 다시 합침 합병 정렬 예시 코드 #include #include using namespace std; vector sorted; void merge(vector& arr, int left, int mid, int right) { int pl=left, pr=mid+1, idx=left; while(pl