본문 바로가기

Algorithm/배열과 연결리스트

백준 방 번호(1475) C++ 풀이

알고리즘 분류

구현

 

문제 해결 아이디어

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세트만 있으면 됨]