Link https://www.acmicpc.net/problem/1475
소스결과 1984 KB / 0 ms
출처 Baekjoon
언어 C++ 17
분류 수학, 문자열 처리
설명
다솜이가 플라스틱 숫자로 방 번호를 만들 때 필요한 세트의 최소 개수를 구하는 문제
6과 9를 같은 문자로 취급 하면서 개수를 셀 때만 다른 문자로 취급하는게 중요한 문제
숫자는 길어야 8자리 수 이다. 6이 남아 있으면 9로 대체 할 수 있고 9가 남아 있으면 6으로 대체 할 수 있다.
숫자 한세트를 미리 사놓고서 사용한 걸 세어 나간다는 방식으로 생각하면 쉽게 해결된다.
알고리즘
1. 방번호 n을 입력 반느다.
2. 문자열 n에 대해서 숫자의 개수를 센다. 다만 6과 9에 한해서는 현재까지 카운팅 된 수 중에 작은 값의 수를 1 추가한다.
3. 모든 수 중에서 수의 개수가 가장 높은 값을 출력해준다.
소스코드
#include <iostream> using namespace std; int main() { short digits[10] = {}; char room[8] = {}; int package = 0; cin >> room; for (int i = 0; i < (sizeof(room) / sizeof(char)); i++) { if (room[i] == '6' || room[i] == '9') { if (digits[6] < digits[9]) digits[6]++; else digits[9]++; } else digits[room[i] - '0']++; } for (int i = 0; i < 10; i++) if (package < digits[i]) package = digits[i]; cout << package; return 0; }
'Algorithm > 문자열 처리' 카테고리의 다른 글
Baekjoon 6324 URLs (0) | 2019.03.08 |
---|---|
BaekJoon 2864 5와 6의 차이 (0) | 2019.01.29 |
BaekJoon 1157 단어 공부 (0) | 2019.01.17 |
BaekJoon 1152 단어의 개수 (0) | 2019.01.05 |
BaekJoon 8595 히든넘버 (0) | 2019.01.02 |