본문 바로가기

공부82

[0624] 알고리즘 동아리 알고리즘 스터디는 사실상 끝나긴 했는데... 그래도 하루 한 문제씩 풀다보니 나름 뭔갈 하고 있다는 기분이 들어서 할 수 있는대로 이어가보려고 한다. 어차피 알고리즘 공부는 해야했고... 11053. 가장 긴 증가하는 부분 수열 다이내믹 프로그래밍 문제. 고민을 좀 오래했는데 코드 자체는 무척 간결하게 나왔다. #include #include #include int main() { std::cin.tie(NULL); std::ios_base::sync_with_stdio(false); int n; std::cin >> n; std::vector num(n); std::vector memory(n, 1); for (int i = 0; i > num[i]; } .. 2021. 6. 25.
[0622] 알고리즘 1149. RGB거리 다이내믹 프로그래밍 문제. 반복문을 사용하여 풀었다. 각 집까지의 경로의 최소값을 구하는데, row값이 같으면 같은 색을 칠하는 것이 되기 때문에 색이 다른 두 값을 비교해 더 작은 값을 골라 최소값을 구하는 방식. #include #include int main() { std::cin.tie(NULL); std::ios_base::sync_with_stdio(false); int n, min; std::cin >> n; int rgb[1001][3]; int memory[1001][3] = { 0 }; for (int i = 0; i > rgb[i][0] >> rgb[i][1] >> rgb[i][2]; } for (int .. 2021. 6. 23.
[0621] 알고리즘 1932. 정수 삼각형 다이내믹 프로그래밍 문제. 원래는 재귀를 이용하여 해결하려 했지만 생각해보니 굳이 재귀 안 써도 반복문으로 풀 수 있겠다 싶어서 노선을 바꾸었다. #include #include #include #include int triangle[501][501]; int memory[501][501]; int main() { std::cin.tie(NULL); std::ios_base::sync_with_stdio(false); int n, max = 0; std::cin >> n; for (int i = 0; i triangle[i][j]; } } memory[0][0] = triangle[0][0]; for (int i = 1; i.. 2021. 6. 22.
[0620] 알고리즘 1541. 잃어버린 괄호 또다시 그리디 알고리즘 문제, 인데 딱히 그리디 알고리즘이라는 자각을 가지고 푼 건 아닌 것 같다. C++을 잡은 이래로 파싱을 다루는 건 아마 처음이라 좀 애먹었고... 애초에 생각했던 파싱 방법은 사용하지도 않았음(너무 복잡했었다.) #include #include #include int main() { std::cin.tie(NULL); std::string f; std::cin >> f; int sum = 0, num = 0; bool cal = false; //cal => 앞에 마이너스가 등장했는가? for (int i = 0; i < f.length(); i++) { if (f[i] == '+') { if (cal) { sum -= num; num = 0; } else.. 2021. 6. 21.
[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.