🏃‍♀️ 코테 연습

13. 가장 많이 사용된 자릿수

ji-hyun 2021. 1. 15. 15:27

 

이 문제의 저작권은 인프런 강의 "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에 담기 위함. 숫자의 개수가 같을 때 마지막 숫자(큰 숫자)가 담아짐