Post List

[BOJ] 백준 1475 방 번호

[BOJ] 백준 1475 방 번호


문제 링크 : https://www.acmicpc.net/problem/1475


0~9까지 숫자가 있습니다. 이 숫자들은 한 봉지 안에 담겨있고, 6과 9는 서로 돌려 쓸 수 있습니다. 이 문제에서 특정 숫자가 주어질때 몇개의 봉지가 쓰이는지 알면됩니다.


우선, 숫자는 1의 자리 숫자들 밖에 없습니다. 따라서 문자열 순회 후 각 숫자들이 몇개 쓰인지 알아내면 됩니다.
그리고, 주의깊게 봐야할 부분은 6과 9 입니다. 서두에 언급 하였듯 두 숫자는 서로 돌려 쓸 수 있습니다. 즉, 9999면 69 69 2세트 봉지가 쓰입니다. 99999면 69 69 9 세봉지가 쓰입니다.
여기서, 6과 9의 합이 짝수면 /2, 홀수면 /2+1 값 만큼 쓰임을 알 수 있습니다.
마지막으로 몇번쓰였는지 저장한 배열을 순회하면서 제일 큰 값을 알아내면 됩니다.


소스코드 :



#include 
#include 
using namespace std;


int main() {
 string str; getline(cin, str);
 int arr[10] = { 0, };
 // 배열 돌면서 각 숫자가 몇봉지 쓰였는지 알아냄.
 for (int i = 0; i < str.length(); i++) arr[str[i] - 48] ++;
 // 6과 9의 합이 짝수면 /2, 홀수면 /2+1.
 if ((arr[6] + arr[9]) % 2 == 0) {
  arr[6] = (arr[6] + arr[9]) / 2;
  arr[9] = 0;
  
 }
 else {
  arr[6] = (arr[6] + arr[9]) / 2;
  arr[9] = 0;
  arr[6]++;
 }
 int big = -1;
 // 가장 큰 값(몇봉지) 알아냄.
 for (int i = 0; i < 10; i++) {
  if (big <= arr[i]) big = arr[i];
 }
 
 cout << big << endl;
}

댓글