본문 바로가기

공부78

[0605~0606] 알고리즘 4949. 균형잡힌 세상 C++ STL에 대해 알아봤으니 대충 써먹어보려고 문제 뒤적이다 1~2년전에 풀다 만 문제를 발견했다... 정작 벡터는 안 쓰고 스택을 썼지만. #include #include #include #include int main() { std::string s; bool isChecked = false; while (true) { getline(std::cin, s); if (s == ".") break; std::stack bracketStack; for (int i = 0; i < s.size(); i++) { if (s[i] == '(' || s[i] == '[') { bracketStack.push(s[i]); } else if (s[i] == ')') { if (bracke.. 2021. 6. 7.
C++ STL - 시퀀스 컨테이너 C++로 알고리즘을 하겠다고 생각한 후부터 늘 STL을 살펴봐야지, 살펴봐야지 하고 드디어 살펴보게 되었다. 실제로 알고리즘 문제를 풀 때 얼마만큼 적용해볼 수 있느냐가 문제일텐데... 우선은 아는 것이 중요하니 개념부터. 언제나 늘 보던 그 씹어먹는 C++강좌와 위키피디아, 그리고 일부 C++관련 게시물을 참고했다. C++ STL(Standard Template Library) 해석하면 'C++ 표준 라이브러리'라고 불리는 이 라이브러리는 4가지의 라이브러리로 이루어져 있다고 한다. 알고리즘 컨테이너 반복자 함수자 보통 STL이라고 하면 위의 3개(알고리즘, 컨테이너, 반복자) 위주로 사용되는 듯 하다. 실제로 알고리즘 문제 풀이를 살펴볼 때도 많이 봤던 익숙한 얼굴들이고... 그중에서도 오늘 훑어본 .. 2021. 6. 4.
[0601] 알고리즘 글 제목을 알고리즘이 아니라 1일 1백준으로 바꿔야하는게 아닌지 고민 중이다... 7568. 덩치 그냥 브루트 포스 사용하는 문제. 각 등수는 '나보다 덩치가 큰 사람 수'에 의해서 정해지기 때문에, 덩치가 큰 사람을 만나면 덩치가 큰 사람만의 랭크를 올리고, 나보다 덩치가 작은 사람을 만나면 내 랭크만을 올린다. #include int main() { std::cin.tie(NULL); std::ios_base::sync_with_stdio(false); int n; //전체 사람 수 std::cin >> n; int x[n], y[n], rank[n]; for (int i = 0; i > x[i] >> y[i]; } for (int i = 0; i < n; i+.. 2021. 6. 1.
[0531] 알고리즘 이걸 알고리즘이라 할 수 있나...? 그냥 백준에서 푼 간단한 문제... 2798. 블랙잭 그냥 브루트포스 문제... 중간에 이상한 곳에서 실수해서 삽질 좀 했는데 아무튼... #include int main() { int n, m; int sum = 0, max = 0; std::cin >> n; std::cin >> m; int cards[n]; for (int i = 0; i > cards[i]; } for (int i = 0; i < n; i++) { sum = 0; if (cards[i] < m) { sum += cards[i]; } else continue; for (int j = i + 1; j < n; j++) { if (sum + cards[j] <.. 2021. 5. 31.
[0530] 알고리즘 10844. 쉬운 계단 수 어제 푼 문제와 같은 다이내믹 프로그래밍 문제. 자릿수를 N이라고 할 때, N자리의 계단 수는 N-1자리의 각 계단 수의 끝 숫자의 -1, +1된 수를 붙이면 나온다는 아이디어는 대충 떠올랐는데, 이걸 코드로 나타내는데 애먹고 채점할 땐 예상치 못한 무언가에 또 애먹었었다. 과제로 수행했던 다이내믹 프로그래밍 문제는 Top-down방식이었어서 재귀를 써야하나 싶었는데, 도대체 어떻게 재귀를 쓰나에서 시작해서 생각을 거치다 다이내믹은 반복문을 사용하는 Bottom-up이라는 방식이 있었음을 떠올렸다... 어렴풋이 배우고 안 써먹으면 이렇게 얼레벌레 알게 되는 것 같다. 코드는 아래와 같았음. #include int main() { int n; long long sum = 0; s.. 2021. 5. 30.
[0529] 알고리즘 어쩌다 보니 알고리즘 공부를 하게 되어서(?) 푼 문제 있음 백업 겸 올리기로 한다... 2156. 포도주 시식 과제로도 한 번 받은 적 있는 거라서 복습 겸 코딩 재활겸(...) 과제의 추억을 떠올리며 진행. 다이내믹 프로그래밍을 사용하는 문제였고, 과제로 받았을 땐 Top-down 형식으로 할 것이 조건이었기 때문에 이번에도 그렇게 했다. 과제로 했을 때는 수학을 하도 못해서 손으로 직접 경우의 수를 따져가며(...) 어떤 조합으로 해가 나올 수 있는지 하나하나 따지면서 풀었었음. #include int divideGlass(int num, int* glasses); int divideGlassAux(int num, int* m, int* glasses); int compareMax(int a, in.. 2021. 5. 29.