다이어리를 꾸미려는 근우를 위해 스티커 팩을 몇 개 사야하는지 알려주자
결과값 = 문자열 길이 라고 생각하면 함정이 빠지게 된다.
N을 출력한다면 문제가 없지만 0 ~ N 까지이기 때문에 각 자리 숫자가 최대로 중복되는 경우를 생각 해야 한다.
처음으로 각 자리가 중복 가능한 수는 모든 자리가 1인 경우이기 때문에 모든 자리의 수가 1인 경우의 수보다 작은 경우라면 결과값에서 -1을 해줘야한다.
#include <iostream>
#include <cstring>
using namespace std;
char input[11] = {};
bool isUnder()
{
if (input[0] < '2')
{
for (int i = 1; input[i] != '\0'; i++)
if (input[i] > '2')
break;
else if (input[i] == '0')
return true;
}
return false;
}
int main()
{
cin >> input;
int len = strlen(input);
cout << len - isUnder();
return 0;
}
2019-03-31 23:23:25에 Tistory에서 작성되었습니다.