[BOJ] 백준 1475번 방 번호

KwangYong·2021년 10월 24일
0

BOJ

목록 보기
3/69
post-thumbnail

링크

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

문제

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

입력

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

풀이

// 방번호
#include <iostream>
using namespace std;

int main(void) {
	ios::sync_with_stdio(0);
	cin.tie(0);
	//ans = 1로 둠으로서 n = 0일때에 대한 예외처리가 자연스럽게 가능해짐
	int n, arr[10] = {}, ans = 1;
	cin >> n;
	
	//자리수 추출
	while (n > 0) {
		arr[n % 10]++;
		n /= 10; 
	}
	
	//최대값 추출
	//6과 9는 한 숫자로 봐야하기 때문에 우선 넘긴다.
	for (int i = 0; i < 10; i++) {
		if (i == 6 || i == 9) {
			continue;
		}
		ans = max(ans, arr[i]);
	}
    	//(arr[6] + arr[9]) / 2)를 올림으로 처리해야하므로 (arr[6] + arr[9] + 1) / 2)
	ans = max(ans, (arr[6] + arr[9] + 1) / 2);
	cout << ans;
	
}

설명

'N = 0'일때도 1세트는 필요하므로 ans=1을 설정해서 대비한다.
6과 9는 한 숫자로 봐야한다.
(arr[6] + arr[9]) / 2)를 올림으로 처리해야하므로 (arr[6] + arr[9] + 1) / 2)로 작성.

profile
바른 자세로 코딩합니다 👦🏻💻

0개의 댓글