관리 메뉴

Mini

백준 1475 cpp // visit 배열활용 본문

Algorithm/배열

백준 1475 cpp // visit 배열활용

Mini_96 2023. 8. 13. 23:47

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

 

1475번: 방 번호

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

www.acmicpc.net

* 문풀

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;
}