반응형
SWEA Learning → programming Advanced → 탐욕 알고리즘 8차시 문제
베이비진 게임 문제
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. 결과 나오면 끝내고 승자 반환하게 구성해주면 끝
반응형
'알고리즘 풀이 > SW Expert Academy' 카테고리의 다른 글
[SWEA] 부분 수열의 합 (python) (0) | 2023.03.31 |
---|---|
[SWEA] 정식이의 은행업무 (python) (0) | 2023.03.31 |
[SWEA] 장훈이의 높은 선반 (python) (0) | 2023.03.31 |
[SWEA] 격자판의 숫자 이어 붙이기 (python) (0) | 2023.03.31 |
[SWEA] 수영장 (python) (0) | 2023.03.31 |
댓글