CS/Algorithm & Data Structure
-
[BOJ][C++] 백준 11729 하노이의 탑 이동순서CS/Algorithm & Data Structure 2022. 11. 22. 14:43
하노이의 탑은 설계가 딱!! 들어맞아서 알고나면 참 재밌지만 항상 뚝딱 풀어지지는 않는다...ㅠ https://shoark7.github.io/programming/algorithm/tower-of-hanoi 이 분 글을 참고해서 풀었다. 탑1, 탑2, 탑3이 있을 때 - 가장 큰 원판(N)을 제외한 나머지(N-1)을 탑1에서 탑2로 옮긴다. // 이 때 탑3을 활용한다.(거쳐서 옮긴다) - 가장 큰 원판(N)을 탑3으로 옮긴다. - 나머지(N-1)원판들을 탑3에 다시 옮긴다. // 이 때 탑 1을 활용한다. 요 과정을 반복한다. n==1이 되면(제일 작은 원판의 이동 차례) 그냥 옮겨준다. #include #include using namespace std; void Hanoi(int n, int fr..
-
[BOJ][C++] 백준 10870 피보나치 수 5CS/Algorithm & Data Structure 2022. 11. 22. 09:50
문제에서 주어진 Fn = Fn-1 + Fn-2 (n ≥ 2) 식을 참고하여 재귀함수를 만들었다. #include using namespace std; int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; else { return fib(n - 1) + fib(n - 2); } } int main() { int N; cin >> N; cout
-
[BOJ][C++] 백준 10872 팩토리얼CS/Algorithm & Data Structure 2022. 11. 22. 09:09
방법 1. 재귀 #include using namespace std; int factorial(int n) { if (n == 1 || n==0) { return 1; } else { return n * factorial(n - 1); } } int main() { int N; cin >> N; cout N; int result=1; for (int i = N; i > 0; i--) { result *= i; } cout
-
[BOJ][C++] 백준 1181 단어 정렬CS/Algorithm & Data Structure 2022. 11. 22. 08:48
1. 중복제거 - find함수 이용하여 push_back할지 말지 미리 결정(요소가 이미 있으면 벡터에 추가하지 않음) 2. 정렬(길이순, 길이가 같으면 사전순) - compare함수를 만들어 sort함수 이용. #include #include #include using namespace std; bool compare(string p1, string p2) { if (p1.length() == p2.length()) { return p1 > N; vector v; for (int i = 0; i >str; if (find(v.beg..
-
[BOJ][C++] 백준 11650 좌표 정렬하기CS/Algorithm & Data Structure 2022. 11. 20. 15:51
sort함수에 compare함수로 정렬기준을 만들어 사용. 좌표는 vector의 pair로 관리. compare에서는 p1의first와 p2의 first(x좌표)가 같으면 second(y좌표)로 비교하도록 했다. #include #include #include #include using namespace std; bool compare(pair p1, pair p2) { if (p1.first == p2.first) { return p1.second > N; vector v(N); for (int i = 0; i > v[i].first..
-
[BOJ][C++] 백준 25305 커트라인CS/Algorithm & Data Structure 2022. 11. 20. 15:24
방법 1: sort함수 default(오름차순)사용 #include #include #include #include using namespace std; int main() { int N, k; cin >> N >> k; vector vec(N); for (int i = 0; i > vec[i]; } sort(vec.begin(), vec.end()); cout > N >> k; vector vec(N); for (int i = 0; i > vec[i]; } sort(vec.begin(), vec.end(), greater()); cout
-
[BOJ][C++] 백준 2587 대표값2CS/Algorithm & Data Structure 2022. 11. 20. 15:08
sort 함수 사용 ( #include 추가. ) sort(시작주소, 끝+1) 오름차순 정렬 sort는 퀵정렬 기반으로서 시간복잡도는 n log n 내림차순 구현을 원한다면 3번째 파라미터로 greater() 추가해주기. sort(시작주소, 끝주소+1, greater()) #include #include #include using namespace std; int main() { int arr[5]; int sum = 0; for (int i = 0; i > arr[i]; sum += arr[i]; } sort(arr, arr+5); cout