알고리즘 풀이/SW Expert Academy
[SWEA] 베이비진 게임 문제(python)
char_lie
2023. 3. 31. 12:09
반응형
SWEA Learning → programming Advanced → 탐욕 알고리즘 8차시 문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
베이비진 게임 문제
0~9까지 숫자를 하나 씩 배분해 3개의 숫자가 run, triplet을 만족했을 때 승자를 구하는 게임을 구현하는 문제
카운팅 배열로 풀면 간단하게 풀 수 있다!
⚙️내가 푼 정답 코드
def check(card,win): # 베이비 진 체크
cnt = 0
for num in card:
if num: # 만약 카운팅 배열에 숫자가 들어있으면
cnt += 1 # 횟수 증가
else: # 없으면
cnt = 0 # 초기화
if cnt == 3 or num == 3: # 연속된 숫가거나 같은 숫자 3개면
return win # 이겼다
return 0
T = int(input())
for case in range(1,T+1):
num = list(map(int, input().split()))
result = 0 # 결과
p1, p2 =[0]*10, [0]*10 # 카운팅 배열
for i, x in enumerate(num): #카드 배치하자
if i % 2: # 홀수면
p2[x] += 1 # 2번 플레이어에게
result = check(p2,2)
else: # 짝수면
p1[x] += 1 # 1번 플레이어에게
result = check(p1,1)
if result: #결과 났으면
break # 끝
print(f'#{case} {result}')
📌문제 접근 포인트
1. 한 턴마다 각각 카드를 지급 받는다. 카드를 지급 받을 때 어떤 카드를 갖고 있는지 체크해줄 카운팅 배열을 하나 만들어 주자.
2. 턴이 돌 때마다 카드의 상태를 확인하고 run or triplet인지 체크를 해보자.
3. 카운팅 배열을 이용하면 같은 카드가 3개일 때, 연속한 숫자 3개 일 때에 대한 케이스를 어렵지 않게 구할 수 있다.
4. 결과 나오면 끝내고 승자 반환하게 구성해주면 끝
반응형