https://www.acmicpc.net/problem/1475
< 방 번호 >
이 문제는 0~9의 숫자카드가 한 개씩 들어있는 숫자카드 세트가 있다고 했을 때
특정 수를 만들기 위해 몇 개의 세트가 존재하는 지 출력해주면 되는 간단한 문제이다.
6과 9는 서로 바꿔쓸 수 있으므로 6과 9를 같은 숫자카드라고 생각하고 풀어도 된다.
입력을 받고 입력된 숫자에 사용된 각 숫자들의 개수를 검사해주고 가장 많이 사용된 숫자에 따르면 된다.
arr[10]과 같이 0~9의 개수를 저장할 배열을 만들어 주고 개수를 모두 구한 다음에 마지막에
(arr[6] + arr[9] + 1) / 2를 해주어도 되고 애초에 숫자를 검사하여 배열에 저장해줄 때
9일 경우에 arr[6]에 더해주어도 된다.
간단하게,
1. 0부터 9까지 숫자가 몇 개 있는 지 저장할 배열
2. 6과 9는 합쳐준 뒤 1을 더하고 2를 나누어주기
1을 더해주는 이유는 6과 9가 함께 1, 3, 5처럼 홀수인 경우를 고려하기 위함
3. 배열에서 가장 큰 숫자에 따라 세트의 개수가 결정
#include <iostream> using namespace std; int arr[10]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); char str[10] = { 0 }; cin >> str; int cnt = 0; for (int i = 0; str[i] != NULL; ++i) { int num = str[i] - '0'; if (num == 9) num = 6; ++arr[num]; } arr[6] = (arr[6] + 1) / 2; int iMax = -1; for (int i = 0; i < 9; ++i) { if (iMax < arr[i]) iMax = arr[i]; } cout << iMax << '\n'; return 0; }
'알고리즘 > 백준 문제풀기' 카테고리의 다른 글
BOJ 백준 1032 명령 프롬프트 <문자열 처리> (0) | 2019.01.02 |
---|---|
BOJ 백준 크로아티아 알파벳 <문자열 처리> (0) | 2019.01.02 |
BOJ 백준 1152 단어의 개수 <문자열 처리> (0) | 2019.01.01 |
BOJ 백준 5719 거의 최단경로 <다익스트라> (0) | 2018.12.31 |
BOJ 백준 1932 정수 삼각형 <DP> (0) | 2018.12.28 |