하루하루 꾸준히, 인생은 되는대로

알고리즘

백준 1475 C언어

긤효중 2022. 2. 19. 20:39

https://www.acmicpc.net/problem/1475

 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net


문제

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)


입력

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.


출력

첫째 줄에 필요한 세트의 개수를 출력한다.


해결방안: 번호가 6,9일 떄만 유의하면 된다. 문자가 6이나 9일떄 count를 증가시켜서 count가 2로 나누어 떨어지면 Num[9]배열을 증가시키고 count가 2로 나누어 떨어지지 않으면 Num[6]배열을 증가시킨다.

그 후 Num배열을 돌면서 최대값을 찾고 그 값을 출력하면 된다.

 

 

전체 소스 코드 ->

#include <stdio.h>
#include <string.h>
 
int Num[11];
int count = 0;
char arr[25];
 
void Calculate_room(int i){
 
        if(arr[i] == '1'){
            Num[1]++;
        }
        else if(arr[i] == '0'){
            Num[0]++;
        }
        else if(arr[i] == '2'){
            Num[2]++;
        }
        else if(arr[i] == '3'){
            Num[3]++;
        }
        else if(arr[i] == '4'){
            Num[4]++;
        }
        else if(arr[i] == '5'){
            Num[5]++;
        }
        else if(arr[i] == '7'){
            Num[7]++;
        }
        else if(arr[i] == '8'){
            Num[8]++;
        }
        else if(arr[i] == '6' || arr[i] == '9'){
            count++;
            if(count%2 == 0){
                Num[9]++;
            }
            else if(count%2 != 0){
                Num[6]++;
            }
        }
 
}
 
int main(void){
 
    scanf("%s",arr);
    for(int i = 0;i<strlen(arr);i++){
        Calculate_room(i);
    }
 
    int Max = -1;
 
   for(int i = 0;i<=10;i++){
       if(Num[i] > Max){
           Max = Num[i];
       }
   }
    printf("%d",Max);
}

 

'알고리즘' 카테고리의 다른 글

백준 1316 C언어  (0) 2022.02.23
백준 14905 C언어  (0) 2022.02.20
백준 1448 C언어  (0) 2022.02.17
분할정복  (0) 2022.02.15
백준 1912번 연속합 C언어  (0) 2022.02.14