- 입력받은 숫자를 반복하여 해당하는 aray[10]의 인덱스에 각각 1씩 더한다.
- 9와 6은 같이 사용 가능하므로 9와 6의 인덱스는 합쳐 반으로 나눈다.
- array중에서 제일 높은 숫자가 정답.
- array에서 n크기 구하는법
ex) d가 int일 경우에 전체 5개가 존재한다면 전체 사이즈 : 20, 한개 사이즈 : 4 전체 사이즈(20) / 한개 사이즈(4) int n = sizeof(d) / sizeof(d[0])
- array에서 max index에 해당하는 값 구하는법(for 문으로도 가능 성능 비슷)
int d[10] = {1, 5, 3, 9, 2}; int max = *max_element(d, d + 10); std::vector<int> vec = {1, 5, 3, 9, 2}; auto max_it = std::max_element(vec.begin(), vec.end());
문자열도 가능하고 아래와 같이도 사용가능
struct Person { std::string name; int age; }; // 비교 함수: 나이를 기준으로 비교 bool compareAge(const Person& a, const Person& b) { return a.age < b.age; } std::vector<Person> people = {{"Alice", 30}, {"Bob", 25}, {"Charlie", 35}}; // 벡터에 Person 객체들 추가 // 최대값 찾기: age를 기준으로 가장 나이가 많은 사람 찾기 auto oldest = std::max_element(people.begin(), people.end(), compareAge);
각 행에서 최대값 찾는 방법
int matrix[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; for (int i = 0; i < 3; ++i) { int* max_ptr = std::max_element(matrix[i], matrix[i] + 3); std::cout << "Max element in row " << i + 1 << ": " << *max_ptr << std::endl; }
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int N;
cin >> N;
int d[10] = { 0 };
while (N > 0)
{
d[N % 10] += 1;
N /= 10;
}
int t = d[6] + d[9];
d[6] = t / 2;
d[9] = t - d[6];
std::cout << *max_element(d, d + 10) << std::endl;
return 0;
}