알고리즘 분류
구현
문제 해결 아이디어
0 ~ 8번 인덱스의 값을 넣을 수 있는 배열을 만들고 각 해당되는 숫자
인덱스에 값을 더하고 9는 6번 인덱스에넣는다.
그런 다음 최대값을 구한다.
코드
#include <iostream>
#include <cmath>
using namespace std;
int arr[9]; // 0 ~ 8 => 9는 6번째 Index에 넣음
string n;
int resultMax = 0;
int main()
{
cin >> n;
int num;
for (int i = 0; i < n.length(); i++)
{
num = n[i] - '0';
if (num == 9) num = 6;
arr[num]++;
}
for (int i = 0; i < 9; i++)
{
int compare = i == 6 ? ceil(arr[i] / 2.f) : arr[i];
if (resultMax < compare)
{
resultMax = compare;
}
}
cout << resultMax;
}
코드 설명
숫자를 문자열로 받은 후 - '0'을 이용하여 글자 하나를 숫자로 바꿔 해당되는 인덱스에 증가시킨다.
이 과정을 다 하면 최대값을 찾아야 하는데 6과 9는 서로 대체가 가능하기 때문에 arr[6]을 2로 나누어
올림값도 체크를 해봐야한다.
[ex)9999일 때 9 2개 말고도 6 2개가 9를 대체 할 수 있기 때문에 2세트만 있으면 됨]
'Algorithm > 배열과 연결리스트' 카테고리의 다른 글
백준 키로거(5397) C++ 풀이 (0) | 2023.01.28 |
---|---|
백준 에디터(1406) C++ 풀이 (0) | 2023.01.28 |
백준 두 수의 합(3273) C++ 풀이 (0) | 2023.01.28 |