본문 바로가기

알고리즘 문제풀이/알고리즘 C++ 풀이

[백준] 1475번: 방 번호 (C++ 풀이)

문제

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

 

풀이

0~9가 한 세트이다. 

입력을 char배열 n에 받아서 각 자리의 수의 개수를 카운트하는 num배열에 저장한다.

대신 6이랑 9를 뒤집어서 사용해도 된다 했으므로

카운트할때 9는 6에 카운트한다.

그리고 num[6]이 짝수면 나누기 2하고 홀수면 나누기 2한 후 1을 더해서 다시 저장한다.

그리고 num배열 중에서 제일 큰 값을 출력하면 된다!

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <algorithm>
using namespace std;
 
const int max_val = 1000000;
char n[max_val + 1];
int num[10];
 
int main() {
    for (int i = 0; i < 10; i++)
        num[i] = 0;
 
    scanf("%s"&n);
    
    for (int i = 0; i < max_val; i++) {
        if (n[i] == 0break;
        if (n[i]-'0' == 9) num[6]++;
        else num[n[i]-'0']++;
    }
 
    if (num[6] % 2 == 0) num[6/= 2;
    else num[6= num[6/ 2 + 1;
 
    int ans = 0;
    for (int i = 0; i < 9; i++)
        ans = max(ans, num[i]);
    
    printf("%d\n", ans);
 
    return 0;
}
cs

 

https://github.com/ziwonii24/Algorithm/blob/master/Baekjoon/1475.cpp

결과