본문 바로가기

공부/알고리즘30

[0615] 알고리즘 11047. 동전 0 어제와 마찬가지로 그리디 알고리즘 문제. 주어지는 동전 자체가 특수하기 때문에(주어지는 동전이 서로 배수 관계), 동전의 가치를 벡터로 받고 뒤에서부터(가장 큰 가치를 가진 동전부터) 확인하여 만들어야 하는 값보다 작은 동전을 찾아내고 차례로 나눠간다. #include #include #include int main() { std::cin.tie(NULL); std::ios_base::sync_with_stdio(false); int n, k, min, num; std::cin >> n >> k; std::vector value(n, 0); min = 0; num = k; for (int i = 0; i > value[i]; } for (int.. 2021. 6. 16.
[0614] 알고리즘 11399. ATM 문제 봐보다 어딘가 익숙해서 보니... 알고리즘 강의 들었을 때 기말고사 문제로 나왔던 문제였다. 그나마 이해할 수라도 있는 문제였었는데... 마침 자다 일어난 머리로도 풀 수 있을 것 같아서 풀었다. #include #include #include int main() { std::cin.tie(NULL); std::ios_base::sync_with_stdio(false); int n; int num; long long min = 0; std::vector time; std::cin >> n; for (int i = 0; i > num; time.push_back(num); } std::vector sum (n, 0); std::sort (ti.. 2021. 6. 15.
[0612] 알고리즘 1992. 쿼드트리 과정 자체는 어제 풀었던 문제와 거의 흡사했다. 주어진 수의 배열을 4분할하고 각각의 분할에 대해 모든 항목이 똑같은지를 검사한 후, 똑같지 않으면 다시 재귀를 통해 분할을 하는 방식. 대신 압축한 결과값을 괄호로 묶인 문자열로 표현해야 하기 때문에 string 헤더 파일을 사용해서 문자열을 만들었다. #include #include #include #include int square[65][65]; std::string zip; void Divide(int col, int row, int side); int main() { std::cin.tie(NULL); int n; std::cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j .. 2021. 6. 13.
[0611] 알고리즘 2630. 색종이 만들기 비교적 간단했던 분할 정복 문제. 나눠진 정사각형 내 모든 요소가 같지 않으면 (첫 번째 요소와 다른 요소가 한 가지라도 있다면) 다시 그 사각형을 4분할 하는 과정을 거친다. #include #include #include int white = 0, blue = 0; int paper[129][129]; void Divide(int col, int row, int side); int main() { std::cin.tie(NULL); std::ios_base::sync_with_stdio(false); int n; //한 변의 길이 std::cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { std::ci.. 2021. 6. 12.
[0608~0609] 알고리즘 맨날 뭔가의 기법을 이용한 문제를 풀어보겠다고 설치지만 오늘(06.09)도 그러지 못했다. 1051. 숫자 정사각형 브루트 포스 문제. 다른 건 다 괜찮았고 최댓값 구하는 함수가 algorithm 헤더에 있다길래 그거 써봤다. 조만간 이거 구성도 살펴봐야지 싶었음. #include #include #include int main() { std::cin.tie(NULL); int n, m, maxSq = 1; std::cin >> n >> m; //n x m 크기 직사각형 입력받기 std::vector square(n, std::vector (m, 0)); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { scanf("%1d", &square[i][.. 2021. 6. 10.
[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.