[백준] 1475 방 번호

Soohyeon B·2022년 9월 28일
0

알고리즘 문제 풀이

목록 보기
22/70

문제

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

입력

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 필요한 세트의 개수를 출력한다.

풀이

풀이 1

  • 6과 9는 서로 대체 가능하다

  • 따라서 6과 9는 구분하지 않는다.

  • 0-8까지, 즉 9개의 인덱스를 가진 배열을 만들고 각 데이터를 0으로 초기화한다.

  • 입력받은 수의 각 자리수를 읽어서 해당 수의 인덱스의 값을 ++해준다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;


int main()
{
    int n;
    cin >> n;
    
    vector<int> nums(9);
    
    while(n>0){
        if(n%10 ==9)
            nums[6]++;
        else
            nums[n%10]++;
        n/=10;
    }
    
    nums[6] = (nums[6]+1)/2;
    
    int result = *max_element(nums.begin(), nums.end());
    cout << result;

    

    return 0;
}

풀이2

#include <bits/stdc++.h>
using namespace std;
const int SIZE=10;

int main (void){
    int roomNum;
    cin >> roomNum;
    
    vector<int> nums(SIZE);
   
    while(roomNum){ 
        nums[roomNum%10]++; 
        roomNum /=10; 
    }
    nums[6] = (nums[6]+nums[9]+1)/2;
    nums[9] = 0;
    
    cout << *max_element(nums.begin(), nums.end());
    
    
    return 0;
}


profile
하루하루 성장하는 BE 개발자

0개의 댓글