πŸ™‡β€β™€οΈ[Silver V] λ°© 번호 - 1475

문제 링크

μ„±λŠ₯ μš”μ•½

λ©”λͺ¨λ¦¬: 2020 KB, μ‹œκ°„: 0 ms

λΆ„λ₯˜

κ΅¬ν˜„

제좜 일자

2023λ…„ 12μ›” 19일 19:34:43

문제 μ„€λͺ…

λ‹€μ†œμ΄λŠ” μ€μ§„μ΄μ˜ μ˜†μ§‘μ— μƒˆλ‘œ 이사왔닀. λ‹€μ†œμ΄λŠ” 자기 λ°© 번호λ₯Ό 예쁜 ν”ŒλΌμŠ€ν‹± 숫자둜 문에 뢙이렀고 ν•œλ‹€.

λ‹€μ†œμ΄μ˜ μ˜†μ§‘μ—μ„œλŠ” ν”ŒλΌμŠ€ν‹± 숫자λ₯Ό ν•œ μ„ΈνŠΈλ‘œ νŒλ‹€. ν•œ μ„ΈνŠΈμ—λŠ” 0λ²ˆλΆ€ν„° 9λ²ˆκΉŒμ§€ μˆ«μžκ°€ ν•˜λ‚˜μ”© λ“€μ–΄μžˆλ‹€. λ‹€μ†œμ΄μ˜ λ°© λ²ˆν˜Έκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, ν•„μš”ν•œ μ„ΈνŠΈμ˜ 개수의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•˜μ‹œμ˜€. (6은 9λ₯Ό λ’€μ§‘μ–΄μ„œ μ΄μš©ν•  수 있고, 9λŠ” 6을 λ’€μ§‘μ–΄μ„œ μ΄μš©ν•  수 μžˆλ‹€.)

μž…λ ₯

첫째 쀄에 λ‹€μ†œμ΄μ˜ λ°© 번호 N이 주어진닀. N은 1,000,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€.

좜λ ₯

첫째 쀄에 ν•„μš”ν•œ μ„ΈνŠΈμ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

πŸš€ν’€μ΄

λ¨Όμ € 각 μˆ«μžλ“€μ˜ 개수λ₯Ό μ €μž₯ν•  배열을 λ§Œλ“€κ³  μˆ«μžλ“€μ„ μ €μž₯ν•΄μ€€λ‹€.

λ§Œμ•½ 6, 9의 κ°œμˆ˜λ³΄λ‹€ 더 λ§Žμ€ μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€λ©΄ κ·Έ 값을 λ¦¬ν„΄ν•œλ‹€.
μ™œλƒν•˜λ©΄ 6, 9 μžμ²΄κ°€ 남기떄문이닀.

λ§Œμ•½ 6의 κ°œμˆ˜κ°€ 9의 κ°œμˆ˜λ³΄λ‹€ 크닀고 ν•  λ•Œ, 차이가 ν™€μˆ˜μΈμ§€ μ§μˆ˜μΈμ§€κ°€ μ€‘μš”ν•˜λ‹€.
예λ₯Ό λ“€μ–΄μ„œ
6의 개수 : 4
9의 개수 : 5
라고 κ°€μ •ν•˜λ©΄
ν•„μš”ν•œ 숫자의 κ°œμˆ˜λŠ” 5κ°€λœλ‹€.

6의 개수 : 4
9의 개수 : 6
라고 κ°€μ •ν•˜λ©΄
ν•„μš”ν•œ 숫자의 κ°œμˆ˜λŠ” 5κ°€ λœλ‹€.

κ·œμΉ™μ„ 생각해보면 차이가 ν™€μˆ˜μΈ κ²½μš°μ—λŠ” 개수의 차이에 1을 더해주고 2둜 λ‚˜λˆ„κ³ ,
짝수의 경우 차이λ₯Ό λ°”λ‘œ 2둜 λ‚˜λˆ„μ–΄μ£Όλ©΄ λœλ‹€.

λ§Œμ•½ 6, 9의 κ°œμˆ˜κ°€ λ™μΌν•˜λ‹€λ©΄ λ™μΌν•œ κ·Έ μˆ«μžκ°€ 정닡이 λœλ‹€.

이 둜직 κ·ΈλŒ€λ‘œ κ΅¬ν˜„ν•˜λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

void solve()
{
	cin >> n;

	while (n > 0)
	{
		numbers[n % 10]++;
		n = n / 10;
	}

	int maxNum = 0;
	for (int i = 0; i <= 9; ++i)
	{
		if (i == 6 || i == 9)
			continue;
		maxNum = max(maxNum, numbers[i]);
	}

	if (maxNum > numbers[6] && maxNum > numbers[9])
	{
		cout << maxNum;
		return; // 6, 9λ₯Ό 비ꡐ할 ν•„μš”κ°€ μ—†μœΌλ―€λ‘œ λ°”λ‘œ λ¦¬ν„΄ν•œλ‹€.
	}

	if (numbers[6] > numbers[9])
	{
		int dis = numbers[6] - numbers[9];
		if (dis % 2 == 0)
		{
			int temp = (numbers[6] - numbers[9]) / 2 + numbers[9];
			maxNum = max(maxNum, temp);
		}
		else
		{
			int temp = (numbers[6] - numbers[9] + 1) / 2 + numbers[9];
			maxNum = max(maxNum, temp);
		}
	}
	else if (numbers[9] > numbers[6])
	{
		int dis = numbers[9] - numbers[6];
		if (dis % 2 == 0)
		{
			int temp = (numbers[9] - numbers[6]) / 2 + numbers[6];
			maxNum = max(maxNum, temp);
		}
		else
		{
			int temp = (numbers[9] - numbers[6] + 1) / 2 + numbers[6];
			maxNum = max(maxNum, temp);
		}
	}
	else if (numbers[9] == numbers[6])
	{
		int temp = numbers[6];
		maxNum = max(maxNum, temp);
	}

	cout << maxNum;
}

πŸš€μ „μ²΄ μ½”λ“œ

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int n;
int numbers[10] = { 0, };

void solve()
{
	cin >> n;

	while (n > 0)
	{
		numbers[n % 10]++;
		n = n / 10;
	}

	int maxNum = 0;
	for (int i = 0; i <= 9; ++i)
	{
		if (i == 6 || i == 9)
			continue;
		maxNum = max(maxNum, numbers[i]);
	}

	if (maxNum > numbers[6] && maxNum > numbers[9])
	{
		cout << maxNum;
		return;
	}

	if (numbers[6] > numbers[9])
	{
		int dis = numbers[6] - numbers[9];
		if (dis % 2 == 0)
		{
			int temp = (numbers[6] - numbers[9]) / 2 + numbers[9];
			maxNum = max(maxNum, temp);
		}
		else
		{
			int temp = (numbers[6] - numbers[9] + 1) / 2 + numbers[9];
			maxNum = max(maxNum, temp);
		}
	}
	else if (numbers[9] > numbers[6])
	{
		int dis = numbers[9] - numbers[6];
		if (dis % 2 == 0)
		{
			int temp = (numbers[9] - numbers[6]) / 2 + numbers[6];
			maxNum = max(maxNum, temp);
		}
		else
		{
			int temp = (numbers[9] - numbers[6] + 1) / 2 + numbers[6];
			maxNum = max(maxNum, temp);
		}
	}
	else if (numbers[9] == numbers[6])
	{
		int temp = numbers[6];
		maxNum = max(maxNum, temp);
	}

	cout << maxNum;
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	//freopen("input.txt", "rt", stdin);

	solve();

	return 0;
}

νƒœκ·Έ:

μΉ΄ν…Œκ³ λ¦¬:

μ—…λ°μ΄νŠΈ: