본문 바로가기

PS_Baekjoon

[백준 C++] 1475번 : 방 번호

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

 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

풀이 :
- 다솜이의 방 번호를 문에 붙이는데 필요한 세트의 갯수를 구해야 한다
- 6과 9는 호환이 가능하기 때문에 따로 계산해줄 필요가 있다
  ex) 66 = 6 하나, 9 하나 -> 1세트
- 6과 9를 제외한 다른 숫자의 경우 최대 갯수가 세트의 갯수가 된다
 
코드 :

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main(){
    cin.tie(NULL);
    ios::sync_with_stdio(false);

	int cnt, Max, arr[10] = {0, };
	string s; 

	cnt = Max = 0;
	cin >> s; //자릿수 구하기 쉽게 문자열로 입력 받음
	for(int i=0; i<s.size(); i++){
		arr[s[i]-'0']++; //문자->숫자로 구하기 위해 '0'빼주고, 카운트
	}
	for(int i=0; i<9; i++){ //6과 9는 따로 계산하기 위해 for문은 8까지만 탐색
		if(i == 6){ //윗줄과 마찬가지 이유로 6은 건너뛴다
			continue;
		}
		if(arr[i] > Max){ //배열의 최댓값을 찾아준다
			Max = arr[i];
		}	
	}
	arr[6] = (arr[6] + arr[9] + 1) / 2; //6과 9는 합쳐주고, 
	//나누기 2를 하면 홀수일 경우 1 작아지기 때문에 미리 더하고 나눠준다
	Max = max(Max, arr[6]); //구해놓은 최댓값과 arr[6] 중 최댓값 출력
	cout << Max << '\n';	
}