
1. 문제 풀이 아이디어
- 배열에 등장한 횟수를 저장하며 제일 자주 등장한 값을 갱신하여 문제를 해결할 수 있다.
2. 나의 정답 코드
using System.Text;
StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader(Console.OpenStandardInput()))
using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()))
{
while (true)
{
int[] input = Array.ConvertAll(sr.ReadLine().Split(), int.Parse);
int n = input[0];
int m = input[1];
int[] d = new int[100];
int result = 100;
if (n == 0) break;
while (n-- > 0)
{
input = Array.ConvertAll(sr.ReadLine().Split(), int.Parse);
for (int i = 1; i < input.Length; i++)
{
d[input[i]]++;
if (d[input[i]] > m || (d[input[i]] == m && input[i] < result))
{
m = d[input[i]];
result = input[i];
}
}
}
sb.AppendLine(result < 100 ? result.ToString() : "0");
}
sw.Write(sb);
}
3. 정리
- 입력을 처리하며 등장 횟수가
m
보다 크거나, 같으면서 번호가 더 작다면 해당 번호를result
에 저장한다.
- 최종적으로 가장 많이 선택된 번호를 출력하되 없을 경우
0
을 출력해 문제를 해결한다.
Share article