-문제 설명
0~9까지 숫자가 적힌 n장의 카드가 주어짐. 가장 많게 적힌 숫자와 장수를 출력
장수가 같을 때는 숫자가 큰쪽 출력
5 <= N <= 100
- 입력
1 // 테스트케이스 갯수
5 49679 // N과 한칸의 공백, 카드 숫자
- 출력
#1 9 2 // 테스트케이스, 카드 숫자, 카드 수
- 입력 예시
3
5 49679
5 08271
10 7797946543
- 출력 예시
#1 9 2
#2 8 1
#3 7 3
- 코드
int arr[1000];
int countArr[1000];
int main(int argc, const char * argv[]) {
int T;
scanf("%d", &T);
for(int tc = 1;tc <= T;tc++)
{
int N; // 입력받은 숫자들
scanf("%d",&N);
for(int i = 0; i < N; i++) // 입력받은 숫자들을 1자리씩 띄어서 배열에 저장
{
scanf("%1d", &arr[i]);
}
for(int i = 0;i<N;i++) // 카운팅
{
int count = 0;
for(int j = 0;j<N;j++)
{
if(arr[i] == arr[j])
count++;
}
countArr[i] = count;
}
int maxValue = countArr[0];
int maxIndex = 0;
for(int i =0;i<N;i++) // 가장 많은 카운트 구하기
{
if (countArr[i] > maxValue) {
maxValue = countArr[i];
maxIndex = i;
}
else if(countArr[i] == maxValue && arr[i] > arr[maxIndex]) // 숫자가 같으면 둘 중 큰 수
maxIndex = i;
}
printf("#%d %d %d\n",tc,arr[maxIndex],countArr[maxIndex]);
}
return 0;
}
'교육 > 문제해결' 카테고리의 다른 글
[1일차] 부분 배열의 합 (0) | 2017.08.28 |
---|---|
[1일차] 사선으로 채우기 (0) | 2017.08.28 |
[1일차] 나선형 배열 (0) | 2017.08.28 |
[1일차] 가장 큰수와 작은 수의 차이 출력하기 (0) | 2017.08.28 |
회사 교육으로 알고리즘을 듣는데 (0) | 2017.08.28 |