[C++][백준 1475] 방 번호

PublicMinsu·2023년 11월 30일

문제

업로드중..

접근 방법

막대를 세운다고 생각해 보자.
가장 튀어나온 막대의 값이 세트의 값인 것이다.
하지만 예외로 6, 9는 합쳐서 사용할 수 있다.
합친 뒤 반으로 나누면 다른 값과 동일하게 사용할 수 있는 것이다.

코드

#include <iostream>
#include <string>
using namespace std;
int nums[10], ret;
string N;
int main()
{
    cin >> N;

    for (char c : N)
    {
        ++nums[c - '0'];
    }

    for (int i = 0; i < 6; ++i)
    {
        ret = max(ret, nums[i]);
    }
    for (int i = 7; i < 9; ++i)
    {
        ret = max(ret, nums[i]);
    }
    ret = max(ret, (nums[6] + nums[9] + 1) / 2);

    cout << ret;
    return 0;
}

풀이

10의 크기를 가지는 배열을 선언해 준 뒤 0~9까지의 값을 세어준다.
그 후 6, 9를 제외한 값 중에서 가장 큰 값을 확인해 주고 6, 9는 1만큼 더한 뒤 2로 나눈다.
1을 더하는 이유는 홀수의 경우 2로 나누면 내림이 되기 때문에 1의 경우 0이 된다.

profile
연락 : publicminsu@naver.com

0개의 댓글