Link https://www.acmicpc.net/problem/16674
소스결과 1984 KB / 0 ms
출처 Baekjoon, KCPC 2018
언어 C++ 17
분류 문자열처리
설명
주어진 수가 2018과 관련 없는 수인지, 관련있는 수인지, 밀접한 수인지, 묶여있는 수인지 구분해서 출력해주자
양의 정수 n의 범위가 int 범위에 포함 되지만 처리는 문자열 처리와 비슷하기에 입력을 문자열로 받는다.
각 자리의 수를 헤아리기위한 배열을 두어 각 자리의 수를 헤아리면 된다.
알고리즘
1. 입력 문자열을 받는다.
2. 입력된 자리의 수를 카운팅 한다.
3. 2, 0, 1, 8중 다른 수가 존재하면 0을 출력한다.
4. 2, 0, 1, 8중 한개라도 0이면 1을 출력한다.
5. 2, 0, 1, 8중 한개라도 개수가 다르면 2를 출력한다.
6. 3, 4, 5 조건을 전부 만족하면 8을 출력한다.
소스코드
#include <iostream>
using namespace std;
int digits[10];
int main()
{
int res = 1;
char input[11];
cin >> input;
for (int i = 0; input[i] != '\0'; i++)
digits[input[i] - '0']++;
// Related
for (int i = 0; i < 10; i++)
{
if (i == 0 || i == 1 || i == 2 || i == 8)
continue;
if (digits[i] != 0)
{
res = 0; break;
}
}
if (res != 0)
{
res = 1;
if (digits[0] && digits[1] && digits[2] && digits[8])
{
res = 2;
if (digits[0] == digits[1] && digits[1] == digits[2] && digits[2] == digits[8])
res = 8;
}
}
cout << res;
return 0;
}
'Algorithm > 문자열 처리' 카테고리의 다른 글
Baekjoon 17249 태보태보 총난타 (0) | 2019.06.03 |
---|---|
Baekjoon 16676 근우의 다이어리 꾸미기 (0) | 2019.03.31 |
Baekjoon 10353 큰 수 A+B (2) (0) | 2019.03.08 |
Baekjoon 16944 강력한 비밀번호 (0) | 2019.03.08 |
Baekjoon 6324 URLs (0) | 2019.03.08 |