본문 바로가기

Algorithm/문자열 처리

BaekJoon 1475 방번호

Link https://www.acmicpc.net/problem/1475

소스결과 1984 KB / 0 ms

출처 Baekjoon

언어 C++ 17

분류 수학, 문자열 처리


설명

다솜이가 플라스틱 숫자로 방 번호를 만들 때 필요한 세트의 최소 개수를 구하는 문제


6과 9를 같은 문자로 취급 하면서 개수를 셀 때만 다른 문자로 취급하는게 중요한 문제

숫자는 길어야 8자리 수 이다. 6이 남아 있으면 9로 대체 할 수 있고 9가 남아 있으면 6으로 대체 할 수 있다.

숫자 한세트를 미리 사놓고서 사용한 걸 세어 나간다는 방식으로 생각하면 쉽게 해결된다.


알고리즘

1. 방번호 n을 입력 반느다.

2. 문자열 n에 대해서 숫자의 개수를 센다. 다만 6과 9에 한해서는 현재까지 카운팅 된 수 중에 작은 값의 수를 1 추가한다.

3. 모든 수 중에서 수의 개수가 가장 높은 값을 출력해준다.


소스코드

#include <iostream>

using namespace std;

int main()
{
	short digits[10] = {};
	char room[8] = {};
	int package = 0;
	
	cin >> room;

	for (int i = 0; i < (sizeof(room) / sizeof(char)); i++)
	{
		if (room[i] == '6' || room[i] == '9')
		{
			if (digits[6] < digits[9])
				digits[6]++;
			else
				digits[9]++;
		}
		else
			digits[room[i] - '0']++;
	}

	for (int i = 0; i < 10; i++)
		if (package < digits[i])
			package = digits[i];

	cout << package;
		
	return 0;
}


'Algorithm > 문자열 처리' 카테고리의 다른 글

Baekjoon 6324 URLs  (0) 2019.03.08
BaekJoon 2864 5와 6의 차이  (0) 2019.01.29
BaekJoon 1157 단어 공부  (0) 2019.01.17
BaekJoon 1152 단어의 개수  (0) 2019.01.05
BaekJoon 8595 히든넘버  (0) 2019.01.02