이 문제의 저작권은 인프런 강의 "it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비" 에 있습니다.
문제 13
N자리의 자연수가 입력되면 입력된 자연수의 자릿수 중 가장 많이 사용된 숫자를 출력하는 프로그램을 작성하세요. 예를 들어 1230565625라는 자연수가 입력되면 5가 3번 상용되어 가장 많이 사용된 숫자입니다. 답이 여러 개일 경우 그 중 가장 큰 수를 출력하세요.
입력예제
>> 1230565625
출력예제
>> 5
* 새로 알게 된 사실
int[int]는 될 수없다는 사실을 알았다.
int a;
int a[0]; 이렇게는 될 수 없다. 그러나 int a[101]; 선언 후 a[0] 은 이런 식으로는 사용 가능
코드 짜보기
#include<stdio.h>
int ch[10];
int main(){
freopen("input.txt", "rt", stdin);
int i, digit, max=-2147000000, res;
char a[101]; // 문자열을 사용해줘야 배열을 사용할 수 있다
scanf("%s", &a); // a라는 배열은 string으로 읽어주어야 한다
for(i=0; a[i]!='\0'; i++){
digit=a[i]-48; // a배열은 문자이므로 아스키코드 실제 숫자로 바꿔준다
ch[digit]++; // ch배열은 전역변수로 0으로 초기화되어 있었고 카운팅 상자 역할을 한다.
}
for(i=0; i<=9; i++){
if(ch[i]>=max){
max=ch[i]; // ch[9]까지 돌면서 각 숫자의 카운팅 개수가 가장 많은 것을 max에 저장
res=i; // 숫자를 출력
} // ">="의 의미는 카운팅 개수가 크거나 "같은 것'을 max에 담기 위함. 숫자의 개수가 같을 때 마지막 숫자(큰 숫자)가 담아짐
'🏃♀️ 코테 연습' 카테고리의 다른 글
25. 석차 구하기 (0) | 2021.06.11 |
---|---|
24. Jolly Jumpers (0) | 2021.06.10 |
23. 연속 부분 증가수열 (0) | 2021.06.09 |
22. 온도의 최댓값 (1차원 배열 구간합 : 제한시간 1초) (0) | 2021.02.04 |
12. 숫자의 총 개수(large : 제한시간 1초) (0) | 2021.01.13 |