알고리즘 연습

[이것이 취업을 위한 코딩테스트다] 그리디 알고리즘

728x90

알고리즘을 공부하기 위해 책을 구매했다.

파이썬을 공부하는것 보다 현재 내 직무에 맞는 언어가 C++이기에 깃허브의 코드를 참고하여 연습하고 있다.

 

큰수의 법칙 (92p)

#include <iostream>
#include <vector>
#include<algorithm>


int main() {
	std::ios_base::sync_with_stdio();
	std::cin.tie(0);
	std::cout.tie(0);

	int n, m, k;
	std::vector<int> v;
	std::cin >> n >> m >> k;
	for (int i = 0; i < n; i++) {
		int x;
		std::cin >> x;
		v.push_back(x);//vector 끝에 요소 추가
	}
	sort(v.begin(), v.end());
	int first = v[n - 1];
	int second = v[n - 2];

	int res = 0;

	while (1) {
		for (int i = 0; i < k; i++) {
			if (m <= 0)
				break;
			res += first;
			m -= 1;
		}
		if (m == 0)
			break;
		res += second;
		m -= 1;
	}

	std::cout << res<<'\n';
}

 

숫자 카드게임(96p)

#include <iostream>
#include <vector>
#include<algorithm>


int main() {
	std::ios_base::sync_with_stdio();
	std::cin.tie(0);
	std::cout.tie(0);

	int n, m;
	int result;
	std::cin >> n >> m;
	for (int i = 0; i < n; i++) {
		int min = 1000000;
		for (int j = 0; j < m; j++) {
			int input;
			std::cin >> input;
			min = std::min(min, input);
		}
		result = std::max(result, min);
	}
	std::cout << result<<'\n';
}

 

// min, max, sort 함수는 algorithm 헤더파일안에 속해있다.

 

책에서는 #include <bits/stdc++.h>라는 헤더파일을 사용하는데 따로 다운받아 사용해야하며 어떤 헤더파일을 쓰는지 정확하게 모를 것 같아 찾아서 사용하기로 했다.

namespace도 사용하지 않기로 했다.

 

기본적인 내용들을 실제로 어떻게 쓸지에 대해 알게 되는 느낌이다.

728x90