Deff_Dev
[백준] 1475번 방 번호 (C++) 본문
https://www.acmicpc.net/problem/1475
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.
첫째 줄에 필요한 세트의 개수를 출력한다.
풀이
입력된 roomNumber를 string으로 변환하여, 해당 문제를 풀이했다.
입력된 roomNumber의 각 번호 갯수를 구하고, 6과 9를 제외한 번호들 중 최댓값을 구한다.
이후, 전에 구한 최댓값과 숫자 6, 9를 더하고 2로 나눈 뒤 나머지 값을 더한 값 중 큰 값을 출력한다.
#include <iostream>
#include <string>
using namespace std;
int main() {
int roomNumber;
int arr[10] = { 0, };
cin >> roomNumber;
string str = to_string(roomNumber);
int maxNum = 0;
for (int i = 0; i < str.length(); i++) {
int n = str[i] - '0';
if (++arr[n] > maxNum && n != 6 && n != 9) {
maxNum = arr[n];
}
}
int a = arr[6] + arr[9];
maxNum = max(maxNum, (a) / 2 + (a % 2 == 0 ? 0 : 1));
cout << maxNum;
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 13300번 방 배정 (C++) (3) | 2024.12.03 |
---|---|
[백준] 3273번 두 수의 합 (C++) (0) | 2024.12.03 |
[백준] 11726번 2 * n 타일링 (C++) (0) | 2024.10.27 |
[백준] 14501 퇴사 (C++) (0) | 2024.10.27 |
[백준] 11053번 가장 긴 증가하는 부분 수열 (0) | 2024.10.27 |