| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 | 512 MB | 490 | 61 | 48 | 12.500% |
알렉스는 포커에서 사용하는 플레잉 카드 덱 하나를 가지고 있다. 덱은 카드 52장으로 이루어져 있고, 각각의 카드에는 무늬와 수가 하나씩 적혀져 있다. 무늬는 스페이드(♠), 클럽(♣), 다이아몬드(♦), 하트(♥) 중 하나이고, 수는 1보다 크거나 같고, 13보다 작거나 같은 정수이다. 서로 다른 두 카드에 적혀있는 무늬와 수가 모두 같은 카드는 없다. 즉, 덱을 이루는 카드의 수는 4×13 = 52장이다. 이 문제에서 카드는 편의상 (무늬, 수)로 표현한다. 즉, 스페이드 4는 (♠, 4), 하트 6은 (♥, 6)으로 나타낸다.
풀 하우스는 세 장이 같은 정수 v1을 가지고, 나머지 두 장이 같은 정수 v2를 가지는 5장의 카드로 이루어져 있다. 이때, v1와 v2는 다른 값을 가져야 한다.
아래와 같은 카드 다섯 장은 풀 하우스이다.
하지만, 아래와 같은 카드 다섯 장은 풀 하우스가 아니다.
카드 한 덱을 이용하면, 동시에 8개의 풀 하우스를 만들 수 있다. 이때, 각각의 카드는 하나의 풀 하우스에만 사용되어야 한다. 아래 방법은 여러 가지 방법 중 하나이다.
얼마 전, 알렉스의 집에 놀러온 밥이 알렉스의 카드 덱중 일부를 집에 가져갔다. 아직 알렉스는 어떤 카드를 밥이 가져갔는지 알지 못하고, 밥이 가져간 카드의 수만 아는 상태이다.
알렉스는 남은 카드를 이용해 최대 몇 개의 풀 하우스를 만들 수 있는지 궁금해졌다. 아직, 어떤 카드를 밥이 가져갔는지 알지 못하기 때문에, 만들 수 있는 풀 하우스의 개수는 달라질 수 있다.
예를 들어, 알렉스가 카드 10장만 가지고 있고, 그 카드가 모두 ♣ 무늬라면, 만들 수 있는 풀 하우스의 개수는 0개이다. 하지만, 10장이 (♠, 1), (♠, 2), (♠, 11), (♠, 12), (♣, 2), (♣, 12), (♦, 1), (♦, 2), (♦, 11), (♦, 12) 라면, 동시에 만들 수 있는 풀 하우스의 개수는 아래와 같이 2개이다.
밥이 가져간 카드의 수만 알고있을 때, 동시에 최대로 만들 수 있는 풀 하우스 패의 최소 개수와 최대 개수를 구하는 프로그램을 작성하시오. 이때, 일부러 카드를 사용하지 않는 것은 불가능하며, 최대한 많은 풀 하우스를 만들기 위해 노력해야 한다.
첫째 줄에 밥이 가져간 카드의 수 n(0 ≤ n ≤ 52)이 주어진다.
첫째 줄에 남아있는 카드를 이용해 동시에 최대로 만들 수 있는 풀 하우스의 최소 개수와 최대 개수를 공백으로 구분해 출력한다.
42
0 2
문제에서 설명한 예시이다.
47
0 1
남아있는 카드의 수는 5장이다. 남은 카드가 풀 하우스를 이루고 있다면, 최대 1개를 만들 수 있고, 그렇지 않은 경우에는 하나도 만들 수 없다.
0
8 8
총 52장의 카드를 가지고 있다. 따라서, 문제에서 설명한 것 처럼 최대 8개의 풀 하우스를 만들 수 있다.
4
8 8
20
3 6