일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 생활코딩
- CSS
- 자료구조 복습
- 풀이
- PHP 웹페이지 만들기
- 머신러닝
- The Loard of BOF
- siss
- XSS Game
- HTML
- C언어
- hackerrank
- 숙명여자대학교 정보보안 동아리
- 백준
- 숙명여자대학교 정보보안동아리
- 드림핵
- 기계학습
- SWEA
- Python
- BOJ
- 파이썬
- Sookmyung Information Security Study
- hackctf
- c++
- c
- 웹페이지 만들기
- Javascript
- lob
- BOJ Python
- WarGame
- Today
- Total
목록2021 SISS 21기 활동/2학기 C (14)
혜랑's STORY
3주차 자유 문제 Prepare > Algorithms > Sorting 풀이 두 숫자의 차이가 가장 작은 수를 찾는 것이 문제이다. 먼저 숫자가 들어있는 arr을 정렬하고, 양 옆의 숫자들과의 차가 가장 작은 것을 저장해 둔다. 그 다음 두 번째 for문을 통해 가장 적은 차를 만드는 숫자를 찾아 result에 저장한다. 전체적 코드는 다음과 같다. vector closestNumbers(vector arr) { int minN; vector result; sort(arr.begin(), arr.end()); for(int i=1; i
3주차 자료구조 복습 Prepare > Data Structures > Stacks 풀이 스택을 사용하여 h1, h2, h3 배열의 데이터 합이 같아지도록 만드는 문제이다. 배열을 거꾸로 돌며 각 스택에 넣어주며, 합을 계산하였다. 이후 각 합이 가질 수 있는 모든 경우의 수를 계산하여 데이터를 제거할 스택을 골라 num에 넣어주고, switch를 이용하여 최상위 값을 제거하였다. 전체 코드는 다음과 같다. int equalStacks(vector h1, vector h2, vector h3) { stack s_h1, s_h2, s_h3; int sum1, sum2, sum3, num; sum1 = sum2 = sum3 = 0; for(int i=h1.size()-1; i>=0; i--){ s_h1.pu..
2주차 자유 문제 Practice > Algorithms > Greedy 풀이 Serve time이 적은 고객부터 출력하는 문제이다. (Serve time은 Order + Prep time이다.) pair로 Serve time과 고객의 번호를 기억한 뒤, Serve time이 작은 사람을 기준으로 내림차순으로 정렬하였다. 그 뒤, p[i].secone(고객의 번호)를 차례로 result 배열에 넣게 되면 Serve time이 적은 고객의 번호가 순서대로 저장되게 된다. 전체 코드는 다음과 같다. vector jimOrders(vector orders) { vector p; vector result; for(int i=0; i < orders.size(); i++){ p.push_back({(orders[..
2주차 자료구조 복습 Practice > Algoritms > Greedy 풀이 A 배열의 아이템과 B 배열의 아이템의 합이 모두 k 이상이 되어야 한다. 이때 각 배열을 정렬한 후 한 배열에서는 최대값을, 다른 배열에서는 최소값을 꺼내어 더하면 모두 k 이상이 될 확률이 높아진다. 따라서 A 배열은 내림차순으로, B 배열은 오름차순으로 정렬한 뒤 두 값을 더한 값이 k보다 작다면 문제의 조건을 통과하지 못하기 때문에 바로 "NO"를 반환하였다. for문이 모두 종료된다면 모두 k 이상이라는 것이므로 "YES"를 반환하였다. 전체적인 코드는 다음과 같다. string twoArrays(int k, vector A, vector B) { vector temp; sort(A.begin(), A.end(), ..
1주차 자유문제 Practice > Algorithms > Greedy 풀이 최대한 많은 선물을 사기 위해 적은 값의 선물부터 골라야 한다고 생각했다. 따라서 prices 백터를 STL sort를 사용하여 정렬해 주었다. // sort 함수는 오름차순이 기본이다. //내림차순으로 정렬하고자 할땐, 비교함수를 사용해야 한다. sort(prices.begin(), prices.end()); 이후 순차적으로 선물의 가격이 남은 돈보다 작다면 선물을 선택하는 방식으로 문제를 해결하였다. 전체적인 코드는 다음과 같다. int maximumToys(vector prices, int k) { int cnt = 0; sort(prices.begin(), prices.end()); for(int i=0; i
1주차 자료구조 복습 Practice > Data Structures > Heap 풀이 문제를 살펴보면 배열의 최소값이 주어진 K보다 커야 한다. 이때 최소힙으로 배열을 저장하면 top값이 k보다 크다면 아래 데이터는 무조건 k보다 큰 값을 가지게 된는 것을 알 수 있다. 따라서 c++ STL에 구현되어 있는 priority_queue를 사용하여 최소힙으로 데이터를 저장하였다. // priority_queue는 최대힙으로 구현되어 있기 때문에 //compare인자로 greater를 넘겨주어 최소힙으로 사용할 수 있다. priority_queue pq; top 값을 최소로 만들어 주었으니 이 값이 만약 k보다 작으면서 priority_queue의 size가 1이라면 sweetness를 더 이상 올릴 수 없..