Ruff! Ruff!
#[C++]1475 - 방 번호 본문
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 |