언유상씨의 건전한 취미생활

[백준 알고리즘] 방 번호(1475번) C로풀기 본문

건전한 취미생활 - 알고리즘

[백준 알고리즘] 방 번호(1475번) C로풀기

언유상 2020. 2. 1. 15:46

문제 이름 : 방 번호

문제 번호 : 1475

사용 언어 : C

문제 유형 : 구현

 

문제는 다음과 같다.

역시 다솜이와 은진이는 의미가 없다.

이 문제에서의 핵심 아이디어는, 6과 9는 서로 뒤집어서 사용할 수 있다는 것이다.

6과 9의 개수에 +1 을 하여 반으로 나누어 주면, 그것이 6, 9를 이용할때 필요한 세트수이다.

나머지 숫자들은 서로 뒤집어서 사용할 수 없으므로 숫자의 개수 = 필요한 세트수 가 된다.

이들중 가장 큰 세트 수를 구하면 된다.

 

따라서 다음과 같은 코드가 나온다.

#include  <stdio.h>
int main() {
    int n, arr[10] = { 0, };
    scanf("%d", &n);
    while (n != 0) {
        arr[n % 10]++;
        n /= 10;
    }
    int temp = (arr[6] + arr[9] + 1) / 2;  #6과 9의 개수를 반으로 나누어준다. (+1은 홀,짝 모두 맞는 값이 나오도록 함)
    for (int i = 0; i < 10; i++) {
        if (i == 6 || i == 9)
            continue;
        if (arr[i] >= temp)
            temp = arr[i];
    }
    if (temp == 0)
        temp = 1;
        printf("%d", temp);
return 0;

}

Comments