하나의 세트에는 하나의 수만 들어있는게 아니라, "0번부터 9번까지 숫자가 하나씩" 들어있는 것입니다.
11123의 경우는 1이 3개가 필요한데, 각 세트에는 1이 1개밖에 없기때문에 3개의 세트가 필요하고, 이 세개의 세트를 사면 2와 3이 딸려오기 때문에 3개의 세트가 필요합니다.
12345의 경우는 한 세트만 사면 1~5까지의 수가 모두 들어있기 때문에 한 세트만 사도 충분합니다.
규칙 찾기
https://www.acmicpc.net/problem/1475
와... 문제 이해를 잘못해서 계속 삽질했었다.
하나의 세트에는 하나의 수만 들어있는게 아니라, "0번부터 9번까지 숫자가 하나씩" 들어있는 것입니다.
11123의 경우는 1이 3개가 필요한데, 각 세트에는 1이 1개밖에 없기때문에 3개의 세트가 필요하고, 이 세개의 세트를 사면 2와 3이 딸려오기 때문에 3개의 세트가 필요합니다.
12345의 경우는 한 세트만 사면 1~5까지의 수가 모두 들어있기 때문에 한 세트만 사도 충분합니다.
문제 다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다. 다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최소값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.) 입력 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. |
code>>
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::ios::ios_base::sync_with_stdio(false);
std::string input;
std::cin >> input;
int count[10] = { 0, };
int max = 0;
for (auto i = 0; i < input.size(); i++)
{
if (input[i] == '9' || input[i] == '6')
{
count[6]++;
continue;
}
else
count[input[i] - '0']++;
if (max < count[input[i] - '0'])
max = count[input[i] - '0'];
}
max = std::max(max, count[6] / 2 + count[6] % 2);
printf("%d\n", max);
return 0;
}
1193>분수찾기 (0) | 2017.07.06 |
---|---|
10799>쇠막대기 (0) | 2017.07.04 |
10250>ACM 호텔 (0) | 2017.07.01 |
2775>부녀회장이 될테야! (0) | 2017.06.30 |
2217>로프 (0) | 2017.06.30 |