https://www.acmicpc.net/problem/1475
* 문풀
1. v[6] == 필요한 6의갯수 // 필요한갯수 기준으로 생각하라.
2. 단, 6은 9로 대체가능
ex) 669 의 필요한 세트수 : 2 == (v[6]+v[9])/2를 올림한 값 == (v[6]+v[9]+1)/2
3. 정답 : max(v[0-9] , (v[6]+v[9]+1)/2 ))
#include <bits/stdc++.h>
using namespace std;
int v[10];
string s;
int ret;
void print_v()
{
for (int i = 0; i < 10; ++i) {
cout << v[i] << " ";
}
cout << endl;
}
int main(){
//1. N 자리수마다 필요한 숫자 세기
//ex) 9999 -> need[6]=4
//단 9는 6으로 치환.
//세트에 9는 없고, 6이 2개잇는것으로 간주
cin >> s;
for (int i = 0; i < s.size(); ++i) {
if (s[i] - '0' == 9) {
s[i] = '6';
}
v[s[i] - '0']++;
}
//print_v();
//need중 최대값 == 필요한 set의수
//단, need[6]=need[6]/2 해야함
if (v[6] % 2 == 0) {
v[6] /= 2;
}
else {
v[6] /= 2;
v[6]++;
}
int max = 0;
for (int i = 0; i < 10; ++i) {
if (max < v[i]) max = v[i];
}
cout << max;
}
-출처 : BaaaaaaaaaaarkingDog
// Authored by : OceanShape
// Co-authored by : BaaaaaaaaaaarkingDog, kiiimiiin
// http://boj.kr/a7a4aa95c4ee446990f868f926993161
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N, a[10] = {}, ans = 0;
cin >> N;
// 자리수 추출
while(N){
a[N%10]++;
N /= 10;
}
for(int i = 0; i < 10; i++){
if(i == 6 || i == 9) continue;
ans = max(ans, a[i]);
}
// (a[6]+a[9])/2를 올림한 값이 6, 9에 대한 필요한 세트의 수이므로 (a[6]+a[9]+1)/2을 계산
ans = max(ans, (a[6]+a[9]+1)/2);
cout << ans;
}
'Algorithm > 배열' 카테고리의 다른 글
백준 1919 cpp // 문자열 차이검사는 +1, -1로 비교하라 (0) | 2023.08.16 |
---|---|
백준 11328 cpp // tc문제는 visit을 초기화하라 , 카운팅 배열 동등비교시 +1 -1하고 값이 0이면 같은배열 (0) | 2023.08.16 |
백준 13300 방배정 cpp // visited배열활용 , 몇 묶음인지 구현하는법 (0) | 2023.08.16 |
백준 10807 개수 세기 // visited 배열이용한 풀이방법 (0) | 2023.08.16 |
백준 3273 cpp // 두수의 차 visited 배열활용 (0) | 2023.08.14 |