[백준/BOJ] 백준 1475번 : 방 번호
2020. 8. 8. 03:22ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/1475
9번 숫자는 6번으로 대체한다 그리고 한 세트에 9는 없고 6은 2개 있다고 가정한다. 그리고 6의 개수에 따라서 그 개수를 구하기 위한 최소 세트 수를 계산한다. 나머지 수들은 세트당 숫자가 하나씩 있으므로 필요한 개수가 그 숫자를 사기 위한 최소 세트의 수이다. 어떠한 숫자를 구하기 위한 최소 세트수가 가장 큰 것이 전체 필요한 세트 개수의 최솟값이다.
코드
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
string n;
int number_set[10];
int cnt;
int max_num = 0;
memset(number_set, 0, sizeof(number_set));
cin >> n;
//각 숫자의 개수를 구한다
for (int i = 0; i < n.size(); i++)
{
//9번 숫자는 6번으로 대체한다 그리고 한 세트에 9는 없고 6은 2개 있다고 가정한다
if (n[i] == '9')
number_set[6]++;
else
number_set[n[i] - '0']++;
}
//한세트에 9는 없고 6이 2개 있다고 가정하므로 필요한 6의 개수에 따라서 그 개수를 구하기 위한 최소 세트 수를 계산한다
//나머지 수들은 필요한 개수가 그 숫자를 사기위한 최소 세트의 수이다(나머지 수들은 세트당 숫자가 하나씩 있으므로)
if (number_set[6] % 2 == 0)
number_set[6] = number_set[6] / 2;
else
number_set[6] = number_set[6] / 2 + 1;
//어떠한 숫자를 사기 위한 세트수가 가장 큰것이 필요한 세트 개수의 최솟값이다
for (int i = 0; i < 10; i++)
{
max_num = max(max_num, number_set[i]);
}
cout << max_num;
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 2468번 : 안전 영역 (0) | 2020.08.09 |
---|---|
[백준/BOJ] 백준 1919번 : 애너그램 만들기 (0) | 2020.08.08 |
[백준/BOJ] 백준 13300번 : 방 배정 (0) | 2020.08.08 |
[백준/BOJ] 백준 11328번 : Strfry (0) | 2020.08.08 |
[백준/BOJ] 백준 10807번 : 개수 세기 (0) | 2020.08.08 |