본문 바로가기
개인 공부/코딩테스트

[c++][백준] 1475번 방 번호 :: seoftware

by seowit 2020. 4. 10.


 

소스코드


#include <iostream>
#include <string>
using namespace std;
int digit[10];

int main(void) {
	string N; cin >> N;
	int len = N.length();
	for (int i = 0; i < len; i++) {
		digit[N[i] - '0']++;
	}
	
	//6과 9처리 (반절씩)
	int six_nine = (digit[6] + digit[9] + 1) / 2;
	digit[6] = six_nine; digit[9] = six_nine;

	int M = 0;
	for (int i = 0; i < 10; i++) {
		if (digit[M] < digit[i]) M = i;
	}
	
	cout << digit[M] << endl;
	return 0;
}

 

1. input을 string으로 받고, 각각의 자리에 해당하는 숫자를 인덱스로 하여 각 숫자의 개수를 세준다.

2. 6과 9는 같이 쓸 수 있기 때문에 반절씩 저장해준다. 그러나 나누기 2를 하는 과정에서 소숫점이 버림되므로 +1을 한 다음 나누기를 한다.

3. 가장 개수가 많은 숫자를 찾고 출력해준다.

댓글