백준 1475 방 번호 C

hyunwoo0081·2022년 2월 13일
1

알고리즘 문제

목록 보기
2/2


백준 1475 방 번호

숫자 NN에 가장 많이 들어가는 숫자의 개수를 찾는 문제입니다.
단, 6과 9는 동시에 사용가능하다는 조건이 있습니다.
즉, 6과 9의 개수의 평균을 반올림한 개수를 구해서 보정을 해주면 됩니다.

문자열을 이용하는 방법과, 정수를 이용하는 방법이 있습니다.
여기에서는 정수를 이용하여 풀었습니다.

정수 개수 구하기

먼저 0~9까지의 정수 개수를 구하기 위해 배열을 선언한 뒤
반복문으로 일의자리부터 순회하면서 수를 구해줍니다.

int count[10] = {0};
while(N > 0) {
    count[N%10]++;
    N /= 10;
}

그 다음 6과 9는 서로 사용가능하기 때문에 보정을 해줍니다.

count[6] = (count[6] + count[9] + 1) / 2;

최대값 구하기

개수 범위의 최솟값은 0이므로
처음 변수를 0으로 설정한 후 최대값을 구해줍니다.

max = 0;
for (i = 0; i < 9; ++i) {
    if(max < count[i]) max = count[i];
}

최종 코드

#include <stdio.h>

int main() {
    int count[10] = {0};
    int i, N, max;

    scanf("%d", &N);

    while(N > 0) {
        count[N%10]++;
        N /= 10;
    }
    count[6] = (count[6] + count[9] + 1) / 2;

    max = 0;
    for (i = 0; i < 9; ++i) {
        if(max < count[i]) max = count[i];
    }

    printf("%d", max);

    return 0;
}

0개의 댓글

관련 채용 정보