Link https://www.acmicpc.net/problem/16676
소스결과 1988 KB / 0 ms
출처 Baekjoon, KCPC 2018
언어 C++ 17
분류 문자열 처리
설명
다이어리를 꾸미려는 근우를 위해 스티커 팩을 몇 개 사야하는지 알려주자
결과값 = 문자열 길이 라고 생각하면 함정이 빠지게 된다.
N을 출력한다면 문제가 없지만 0 ~ N 까지이기 때문에 각 자리 숫자가 최대로 중복되는 경우를 생각 해야 한다.
처음으로 각 자리가 중복 가능한 수는 모든 자리가 1인 경우이기 때문에 모든 자리의 수가 1인 경우의 수보다 작은 경우라면 결과값에서 -1을 해줘야한다.
알고리즘
1. 문자열을 입력 받는다.
2. 문자열의 길이를 계산한다.
3. 문자열의 길이만큼 1이 포함되는 경우가 존재하는지 판단한다.
4. 3의 조건을 만족하면 문자열의 길이를, 만족하지 않으면 문자열 길이 -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;
}
'Algorithm > 문자열 처리' 카테고리의 다른 글
Baekjoon 2902 KMP는 왜 KMP인가? (0) | 2019.08.21 |
---|---|
Baekjoon 17249 태보태보 총난타 (0) | 2019.06.03 |
Baekjoon 16674 2018년을 되돌아보며 (0) | 2019.03.31 |
Baekjoon 10353 큰 수 A+B (2) (0) | 2019.03.08 |
Baekjoon 16944 강력한 비밀번호 (0) | 2019.03.08 |