Algorithm/배열과 연결리스트
백준 방 번호(1475) C++ 풀이
khjtoy
2023. 1. 28. 01:15

알고리즘 분류
구현
문제 해결 아이디어
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세트만 있으면 됨]