728x90
https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do
< 📝 문제 >
0부터 9까지인 숫자 카드 4세트를 섞은 후 6개의 카드를 골랐을 때, 연속인 숫자가 3개 이상이면 run, 같은 숫자가 3개
이상이면 triplet이라고 한다.
게임을 시작하면 플레이어1과 플레이어 2가 교대로 한 장 씩 카드를 가져가며, 6장을 채우기 전이라도 먼저 run이나
triplet이 되는 사람이 승자가 된다.
두 사람이 가져가게 되는 순서대로 12장의 카드에 대한 정보가 주어졌을 때 승자를 알아내는 프로그램을 작성하시오. 만
약 무승부인 경우 0을 출력한다.
예를 들어 9 9 5 6 5 6 1 1 4 2 2 1인 경우, 플레이어 1은 9, 5, 5, 1, 4, 2카드를, 플레이어2는 9, 6, 6, 1, 2, 1을 가져가게
된다.
이때는 카드를 모두 가져갈 때 까지 run이나 triplet이 없으므로 무승부가 된다.
< ❓ 생각 >
< 💻 코드 >
def baby_gin(play):
check = [0]*10
# 카드 숫자 세기
for i in play:
check[i] += 1
# triplet
if 3 in check:
return True
# run
for i in range(8):
if 0 not in check[i:i+3]:
return True
# 테스트케이스 개수
T = int(input())
for tc in range(1,T+1):
card = list(map(int,input().split()))
# 플레이어 1, 플레이어 2
play1 = []
play2 = []
result = 0
# 카드 3장이상일 때 baby_gin 확인
for i in range(6):
play1.append(card[i*2])
if len(play1) >2 and baby_gin(play1):
result = 1
break
play2.append(card[i*2+1])
if len(play2) >2 and baby_gin(play2):
result = 2
break
print(f'#{tc} {result}')
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[SWEA] 3499. 퍼펙트 셔플 - Python (0) | 2022.04.01 |
---|---|
[SWEA] 1860. 진기의 최고급 붕어빵 - Python (0) | 2022.03.30 |
[SWEA] 5202. 화물 도크 - Python (0) | 2022.03.29 |
[SWEA] 5201. 컨테이너 운반 - Python (0) | 2022.03.29 |
[SWEW] 5189. 전자카트 - Python (0) | 2022.03.29 |
댓글