Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Ruff! Ruff!

#[C++]1475 - 방 번호 본문

백준

#[C++]1475 - 방 번호

maeng-kim 2024. 1. 27. 01:06

https://www.acmicpc.net/problem/1475

 

1475번: 방 번호

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

www.acmicpc.net


문제

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

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

입력

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

출력

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


코드

#include <iostream>
#include <string>
using namespace std;
string n;
int num[10];

int main()
{
    cin >> n;
    
    for(int i=0; i<n.length(); i++) {
        if(n[i]=='9') num[6]++;
        else num[n[i]-'0']++;
    }
    
    int sn = (num[6]+1)/2; //반올림...
    num[6]=num[9]=sn;
    
    int m=0;
    for(int i=0; i< 10; i++) {
        if(num[m]<num[i]) m=i;
    }
    cout << num[m] << "\n";
    return 0;
}

string으로 입력 받고 6==9으로 취급해서 9가 들어와도 6++한다.

6,9 가 모두 6에 모였기 때문에 /2 해줘야하는데 이때 +1을 더해서 반올림을 해준다.

이후 숫자의 배열을 돌면서 가장 큰 숫자의 반복 횟수를 반환한다..

 

처음엔 vector로 했다가 굳이 vector할 필요가 없어서 int로 받아서 %10하고 /10해서 while문으로 돌렸는데

백준 사이트에서 틀렸다고 해서.. string으로 했다.

n[i]-'0' 대신 48을 해도 됨.. (아스키코드)

 

실버. 너 머냐 넘 어렵다

'백준' 카테고리의 다른 글

#[C++]7785 - 회사에 있는 사람  (0) 2024.01.29
#[C++]1764 - 듣보잡  (1) 2024.01.27
#[C++]1244 - 스위치 켜고 끄기  (3) 2024.01.26
#[C++]1026 - 보물  (1) 2024.01.26
#[C++]2869 - 달팽이는 올라가고 싶다  (1) 2024.01.26