일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코테
- c++
- 코딩
- Stack
- 정석
- vector
- 정석학술정보관
- Computer science
- OS
- 백준
- 북리뷰
- 브루트포스
- bfs
- coding
- 스택
- 너비우선탐색
- Operating System
- 구현
- 알고리즘
- 오에스
- 오퍼레이팅시스템
- 컴공
- 개발
- 그래프
- 자료구조
- cs
- 컴공과
- DP
- 문제풀이
- 컴퓨터공학과
- Today
- Total
목록개발 (97)
Little Jay
algorithm 헤더에는 sort라는 기능이 있는데 그 기능에 약간 손을 봐주면 되는 문제 sort 기능에 마지막 세 번째에 함수를 넣어 주어서 그 함수의 return값대로 정렬을 하면 되는 문제이다 이번 문제에서는 compare이라는 함수를 사용해서 단어의 길이를 비교해주어 sort하도록 유도했다 #include #include #include #include using namespace std; bool compare(string a, string b) { if (a.size() == b.size()) { return a > n; string s, temp; vector v..
처음에 시간 초과가 떠서 봤더니 ios_base::sync_with_stdio(0); cin.tie(0); 이거 두개 안해서 틀렸었다. 항상 시간 초과가 나면 킹받는다. 이분(이진)탐색 즉, Binary Search를 이용하는 문제이다 자료구조를 배우긴 했지만 Binary Search를 배우지는 않아서 algorithm 헤더에 있는 binary_search 메소드를 사용했다 이 부분 구현은 혼자 따로 해봐야 겠다 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m, x; cin >> n; vector v; for (int i = 0; i < n; i++) {..
컴공을 전공하면 정수론을 배운다 정수론에서 가장 중요한 것은 개인적으로 모듈러 연산인 것 같다 (이거에 대해서 한 학기동안 배운 것 같다) 모듈러 연산은 나머지 연산이며 이거는 코딩할때 간단히 나머지 연산자만 사용하면 된다 이 문제를 풀때 조건을 제대로 안읽어서 m, r 값을 뭐라고 해야할지 한참 고민했었다. 문제만 제대로 읽었으면 쉽게 풀었을 것 같다 나중에 한번에 나머지 연산을 해주는 것 보다는 바로바로 숫자에 대해서 나머지 연산을 해주는 것이 좋다 안그러면 long long을 넘어가는 정수가 저장되어 에러가 날 수도 있다 #include #include using namespace std; #define r 31 #define m 1234567891 int main() { int n; cin >> ..
처음에는 무지성으로 풀다가 음수인 숫자를 못보고 잘못 풀었음을 느꼈다 음수를 받을 때 어떻게 하면 좋을지 좀 많이 고민했었는데 이분 탐색으로도 안풀려서 한시간 고민하다가 안되서 결국 구글링 C++의 algorithm에는 다양한 기능들이 있다 그 중 lower_bound, upper_bound라는 기능들이 있는데 이거를 활용하면 정말 간단하게 풀리는 문제였다 #include #include #include using namespace std; int main() { int n, m, x, y; cin >> n; vector v; for (int i = 0; i > x; v.push_back(x); } sort(v.begin(), v.end()); cin >> m; vector..
보호되어 있는 글입니다.
#include #include using namespace std; int main() { int arr[10]; int n; int cnt = 0; cin >> n; while (n != 0) { arr[cnt] = n % 10; n /= 10; cnt++; } sort(arr, arr + cnt, greater()); for (int i = 0; i < cnt; i++) { cout
Brute Force 알고리즘 문제 처음에 문제 이해 못해서 엄청 고생했지만 결국 분해합의 생성자는 입력된 값 보다 작다는거를 명심하고 풀기 #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int num, sum, temp; cin >> num; for (int i = 1; i < num; ++i) { sum = i; temp = i; while (temp) { sum += temp % 10; temp /= 10; } if (num == sum) { cout
여기서 애매하게 표현한게 있는데, isFirst의 의미는 첫 번째가 아니라는 것을 의미한다. 문제에서 최빈값이 여러개일때 그 중 두번째 작은 수를 출력하라는 조건이 많이 까다로웠다. 구글링을 해서 여러 코드들을 참고하였다. #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int num, range, median, temp = -1, mean = 0, tmp = 0, frequen_val = 0; bool isFirst = false; int number[8001] = { 0, }; vector v; cin >> num; for (in..
얘도 큐를 사용하는 문제인데 벡터를 사용해서 시간 초과가 떴었던 문제 #include #include using namespace std; int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(false); int n; queue q; cin >> n; for (int i = 1; i 1) { q.pop(); q.push(q.front()); q.pop(); } cout
처음에 벡터로 풀었다가 알고리즘 분류쪽에 '큐'라고 나와있어서 다시 푼 문제 간단하게 앞에거 거를 k-1만큼 뒤로 붙이면서 pop 시켜버리면 맨 앞에 것이 k번째 수가 되니까 그거만 pop하는 과정을 반복하면 된다. #include #include using namespace std; int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(false); int n, k; queue q; cin >> n >> k; for (int i = 1; i