layout: post
title: "[백준] 1475번_방 번호"
date: 2019-05-05
desc: "백준 1475번"
keywords: "Algorithm"
categories: [Algorithm]
tags: [백준, 알고리즘, 1475번, 방번호, c++]
icon: icon-html
백준_1475번
방 번호
문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
입력
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
출력
첫째 줄에 필요한 세트의 개수를 출력한다.
예제 입력 1
9999
예제 출력 1
2
출처
알고리즘 분류
- 수학
- [문자열 처리](https://www.acmicpc.net/problem/tag/문자열 처리)
풀이
- 모든 9를 6으로 바꾼다. 그 후 6이 들어간 인덱스는 2배수당 1세트로 계산해준다. (1,2개는 1세트,,3,4개는 2세트…..)
- 그 후 0~9까지의 인덱스 중의 최대값을 구한다.
소스코드
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n, arr[10]={0};
cin >> n;
if(n==0) {
cout << 1 << "\n";
return 0;
}
int temp = 0;
while(n>0) {
temp=n%10;
n=n/10;
if(temp==9) {
temp=6;
}
arr[temp]++;
}
arr[6]=arr[6]/2 + arr[6]%2;
int max = 0;
for(int i=0; i<10; i++) {
if(arr[i]>=max) {
max=arr[i];
}
}
cout << max << "\n";
return 0;
}
댓글 영역