https://www.acmicpc.net/problem/1475
문제
다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.
다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 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 |