반응형
https://www.acmicpc.net/problem/1475
💡 방 번호
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
[입력]
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
[출력]
첫째 줄에 필요한 세트의 개수를 출력한다.
✅ 문제 풀이
- 주어진 방번호 N의 각 자리 수를 구해야한다.
N을 10으로 나눈 나머지를 구하면 된다. - 그리고 그 값을 카운트 해준 후, N을 10으로 나눈 몫으로 갱신한다.
- 카운트 하기 위해서 0부터 9까지의 출현 빈도를 저장할 배열을 선언해준다.
- 만약 각 자리의 수가 6또는 9이면, 6번 인덱스와 9번 인덱스의 값을 비교해서 똑같은 경우 6에 먼저 카운트 되도록 하고, 아니면 9에 카운트 되도록 한다.
6과 9는 뒤집어서 서로를 사용할 수 있기 때문이다. - 그렇지 않다면 그냥 그 수에 해당하는 인덱스의 값에 카운트 되도록 한다.
- 필요한 상자수는 배열에서 가장 MAX인 값과 같게 된다.
✏ 코드 전문
#include<iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int arr[10] = { 0 };
int N;
cin >> N;
while (N > 0) {
if (N % 10 == 6 || N % 10 == 9) {
if (arr[6] == arr[9]) arr[6]++;
else arr[9]++;
}
else arr[N % 10]++;
N /= 10;
}
int max = arr[0];
for (int i = 1; i < 10; i++) {
if (max < arr[i]) max = arr[i];
}
cout << max;
return 0;
}
반응형
'CO-TE > 백준' 카테고리의 다른 글
[백준] 1049번 C++ "기타줄" 풀이 / 그리디 알고리즘 (1) | 2023.12.05 |
---|---|
[백준] 1439번 C++ "뒤집기" 풀이 / 문자열처리 (1) | 2023.12.04 |
[백준] 1182번 C++ "부분수열의 합" 풀이 / 백트래킹, 가지치기, 재귀함수 (2) | 2023.12.03 |
[백준] 1074번 C++ "Z" 풀이 / 분할과 정복, 반복문 (1) | 2023.12.01 |
[백준] 2003번 C++ "수들의 합2" 풀이 / 누적합, 두 포인터 (1) | 2023.11.28 |