BOJ 2503. μ«μ μΌκ΅¬
πββοΈ[Silver III] μ«μ μΌκ΅¬ - 2503
μ±λ₯ μμ½
λ©λͺ¨λ¦¬: 2020 KB, μκ°: 0 ms
λΆλ₯
λΈλ£¨νΈν¬μ€ μκ³ λ¦¬μ¦, ꡬν
μ μΆ μΌμ
2024λ 1μ 6μΌ 15:29:32
λ¬Έμ μ€λͺ
μ 보문νμ§ν₯μ μ 보 μμ¬ λμ리μμ λμ리 νλμ νλ μμμ λ―Όνμ΄λ μ¬λ μκ°μ νν μ«μμΌκ΅¬ κ²μμ νκΈ°λ‘ νλ€.
- μμλ 1μμ 9κΉμ§μ μλ‘ λ€λ₯Έ μ«μ μΈ κ°λ‘ ꡬμ±λ μΈ μ리 μλ₯Ό λ§μμμΌλ‘ μκ°νλ€. (μ: 324)
- λ―Όνμ΄λ 1μμ 9κΉμ§μ μλ‘ λ€λ₯Έ μ«μ μΈ κ°λ‘ ꡬμ±λ μΈ μ리 μλ₯Ό μμμκ² λ¬»λλ€. (μ: 123)
- λ―Όνμ΄κ° λ§ν μΈ μ리 μμ μλ μ«μλ€ μ€ νλκ° μμμ μΈ μ리 μμ λμΌν μ리μ μμΉνλ©΄ μ€νΈλΌμ΄ν¬ ν λ²μΌλ‘ μΌλ€. μ«μκ° μμμ μΈ μ리 μμ μκΈ΄ νλ λ€λ₯Έ μ리μ μμΉνλ©΄ λ³Ό ν λ²μΌλ‘ μΌλ€.
μ) μμκ° 324λ₯Ό κ°κ³ μμΌλ©΄
- 429λ 1 μ€νΈλΌμ΄ν¬ 1 λ³Όμ΄λ€.
- 241μ 0 μ€νΈλΌμ΄ν¬ 2 λ³Όμ΄λ€.
- 924λ 2 μ€νΈλΌμ΄ν¬ 0 λ³Όμ΄λ€.
- μμλ λ―Όνμ΄κ° λ§ν μκ° λͺ μ€νΈλΌμ΄ν¬ λͺ λ³ΌμΈμ§λ₯Ό λ΅ν΄μ€λ€.
- λ―Όνμ΄κ° μμμ μΈ μ리 μλ₯Ό μ ννκ² λ§μΆμ΄ 3 μ€νΈλΌμ΄ν¬κ° λλ©΄ κ²μμ΄ λλλ€. μλλΌλ©΄ λ―Όνμ΄λ μλ‘μ΄ μλ₯Ό μκ°ν΄ λ€μ μμμκ² λ¬»λλ€.
νμ¬ λ―Όνμ΄μ μμλ κ²μμ νκ³ μλ λμ€μ μλ€. λ―Όνμ΄κ° μμμκ² μ΄λ€ μλ€μ λ¬Όμ΄λ³΄μλμ§, κ·Έλ¦¬κ³ κ°κ°μ λ¬Όμμ μμκ° μ΄λ€ λλ΅μ νλμ§κ° μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€. μ΄ μ λ ₯μ λ°νμΌλ‘ μ¬λ¬λΆμ μμκ° μκ°νκ³ μμ κ°λ₯μ±μ΄ μλ μκ° μ΄ λͺ κ°μΈμ§λ₯Ό μμλ§νμΌ νλ€.
μλμ κ°μ κ²½μ°λ₯Ό μκ°ν΄λ³΄μ.
- λ―Όν: 123
- μμ: 1 μ€νΈλΌμ΄ν¬ 1 λ³Ό.
- λ―Όν: 356
- μμ: 1 μ€νΈλΌμ΄ν¬ 0 λ³Ό.
- λ―Όν: 327
- μμ: 2 μ€νΈλΌμ΄ν¬ 0 λ³Ό.
- λ―Όν: 489
- μμ: 0 μ€νΈλΌμ΄ν¬ 1 λ³Ό.
μ΄λ κ°λ₯ν λ΅μ 324μ 328, μ΄λ κ² λ κ°μ§μ΄λ€.
μμλ λμ리μ κ·μ¨μ μ λ°λ₯΄λ μ°©ν μμ΄λΌ λ―Όνμ΄μ λ¬Όμμ 곧μ΄κ³§λλ‘ μ μ§νκ² λ΅νλ€. κ·Έλ¬λ―λ‘ μμμ λ΅λ€μλ λͺ¨μμ΄ μλ€.
λ―Όνμ΄μ λ¬Όμλ€κ³Ό κ°κ°μ λ¬Όμμ λν μμμ λ΅μ΄ μ λ ₯μΌλ‘ μ£Όμ΄μ§ λ μμκ° μκ°νκ³ μμ κ°λ₯μ±μ΄ μλ λ΅μ μ΄ κ°μλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μλ λ―Όνμ΄κ° μμμκ² λͺ λ²μ΄λ μ§λ¬Έμ νλμ§λ₯Ό λνλ΄λ 1 μ΄μ 100 μ΄νμ μμ°μ Nμ΄ μ£Όμ΄μ§λ€. μ΄μ΄μ§λ Nκ°μ μ€μλ κ° μ€λ§λ€ λ―Όνμ΄κ° μ§λ¬Έν μΈ μ리 μμ μμκ° λ΅ν μ€νΈλΌμ΄ν¬ κ°μλ₯Ό λνλ΄λ μ μμ λ³Όμ κ°μλ₯Ό λνλ΄λ μ μ, μ΄λ κ² μ΄ μΈ κ°μ μ μκ° λΉμΉΈμ μ¬μ΄μ λκ³ μ£Όμ΄μ§λ€.
μΆλ ₯
첫 μ€μ μμκ° μκ°νκ³ μμ κ°λ₯μ±μ΄ μλ λ΅μ μ΄ κ°μλ₯Ό μΆλ ₯νλ€.
πνμ΄
ν΄λΉ μ«μκ° κ°λ₯μ±μ΄ μλμ§ κ²μ¬νλ ν¨μλ₯Ό λ§λ€μλ€.
0μ΄ λ€μ΄κ°λ©΄ μλκ³ λͺ¨λ μ«μκ° λ¬λΌμΌνλ©° μ€νΈλΌμ΄ν¬, λ³Όμ κ°μλ₯Ό μΈμ΄μ κ²°κ³Όλ₯Ό λ΄λ ν¨μμ΄λ€.
bool hasPossibility(int input, int number, int strike, int ball)
{
int input100 = input / 100;
int input10 = input / 10 % 10;
int input1 = input % 10;
int number100 = number / 100;
int number10 = number / 10 % 10;
int number1 = number % 10;
if (input100 == input10 || input100 == input1 || input10 == input1)
return false;
if (input100 == 0 || input10 == 0 || input1 == 0)
return false;
int checkStrike = 0, checkBall = 0;
if (input100 == number100)
{
checkStrike++;
}
if (input10 == number10)
{
checkStrike++;
}
if (input1 == number1)
{
checkStrike++;
}
if (input100 == number10 || input100 == number1)
{
checkBall++;
}
if (input10 == number1)
{
checkBall++;
}
if (number100 == input10 || number100 == input1)
{
checkBall++;
}
if (number10 == input1)
{
checkBall++;
}
if (checkStrike == strike && checkBall == ball)
{
return true;
}
else
{
return false;
}
}
μμ ν¨μλ₯Ό 123~987λͺ¨λ νμν΄μ κ²½μ°λ₯Ό ꡬνλ€.
πμ 체 μ½λ
κ°λ₯μ±μ΄ μλ λͺ¨λ μ«μκ° μΆλ ₯νκ² νλ€.
#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;
bool hasPossibility(int input, int number, int strike, int ball)
{
int input100 = input / 100;
int input10 = input / 10 % 10;
int input1 = input % 10;
int number100 = number / 100;
int number10 = number / 10 % 10;
int number1 = number % 10;
if (input100 == input10 || input100 == input1 || input10 == input1)
return false;
if (input100 == 0 || input10 == 0 || input1 == 0)
return false;
int checkStrike = 0, checkBall = 0;
if (input100 == number100)
{
checkStrike++;
}
if (input10 == number10)
{
checkStrike++;
}
if (input1 == number1)
{
checkStrike++;
}
if (input100 == number10 || input100 == number1)
{
checkBall++;
}
if (input10 == number1)
{
checkBall++;
}
if (number100 == input10 || number100 == input1)
{
checkBall++;
}
if (number10 == input1)
{
checkBall++;
}
if (checkStrike == strike && checkBall == ball)
{
return true;
}
else
{
return false;
}
}
int n, res = 0, number, strike, ball, maxNum = 0;
vector<int> vec;
void solve()
{
vec = vector<int>(1000);
cin >> n;
for (int i = 0; i < n; ++i)
{
cin >> number >> strike >> ball;
for (int j = 123; j < 1000; ++j)
{
if (hasPossibility(j, number, strike, ball))
{
vec[j]++;
maxNum = max(maxNum, vec[j]);
}
}
}
for (int i = 123; i < 1000; ++i)
{
if (vec[i] == maxNum)
{
res++;
cout << i << endl;
}
}
cout << res;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
freopen("input.txt", "rt", stdin);
solve();
return 0;
}