문제링크 : https://www.acmicpc.net/problem/1475
문제풀이
① 0부터 9까지 길이가 10인 배열을 만든다.
② 입력받은 방 번호를 숫자 하나씩 차례로, 개수를 세어 배열에 넣는다.
③ 6, 9을 제외한 나머지 숫자들 중 제일 많이 나온 수를 찾는다.
④ 6, 9는 각각의 개수를 더해서 따로 계산한다.
예) 669 또는 999 가 나오는 경우 2세트가 필요하고, 6996 또는 6666이 나오는 경우에도 2세트가 필요하다.
6과 9를 더해서 합이 짝수이면 2로 나눈 만큼의 세트가 필요하고, 합이 홀수이면 2로 나눠 1을 더한 만큼의 세트가 필요한 것을 알 수 있다.
⑤ ③과 ④에서 구한 수 중 더 큰 수를 출력한다.
소스코드
/* * 백준 1475번: 방 번호 */ #include <iostream> #include <string> using namespace std; int main() { string N; getline(cin, N); int arr[10] = { 0, }; for (int i = 0; i < N.length(); i++) { arr[N[i] - '0']++; } int max = 0; for (int i = 0; i < 10; i++) { if (i != 6 && i != 9) { if (max < arr[i]) max = arr[i]; } } int sum = arr[6] + arr[9]; sum = sum % 2 == 0 ? sum / 2 : sum / 2 + 1; int result = max < sum ? sum : max; cout << result; return 0; }
'Algorithm > 문제풀이' 카테고리의 다른 글
[백준] 2750번: 수 정렬하기 (0) | 2019.05.23 |
---|---|
[백준] 6064번: 카잉 달력 (0) | 2019.05.22 |
[백준] 1157번: 단어 공부 (0) | 2019.05.21 |
[백준] 1924번: 2007년 (0) | 2019.05.19 |
[백준] 2775번: 부녀회장이 될테야 (0) | 2019.05.19 |