난이도 : D3
문제번호 : 5023
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
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이 없으므로 무승부가 된다. |
입력
첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50 |
출력
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. |
예시
입력 | 출력 |
3 9 9 5 6 5 6 1 1 4 2 2 1 5 3 2 9 1 5 2 0 9 2 0 0 2 8 7 7 0 2 2 2 5 4 0 3 |
#1 0 #2 1 #3 2 |
2. 문제풀이
카운팅을 이용하여 문제를 풀었다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#D3 5203 베이비진 게임
#우승자가 나왔는지 체크
def card_check(number, index):
global answer
#플레이어 캐스팅하기
if number & 1:
player = player1
else:
player = player2
#카드가 3장이라면
if player[index] == 3 :
answer = number
#카드가 8보다 작다면 자신기준으로 우측확인
if index < 8 and player[index] and player[index+1] and player[index+2]:
answer = number
#카드가 1보다 크다면 자신기준으로 좌측확인
if index > 1 and player[index] and player[index-1] and player[index-2]:
answer = number
#양쪽으로 1개씩 볼수있다면 자신기준으로 양쪽확인
if 0 < index < 9 and player[index-1] and player[index] and player[index+1]:
answer = number
for t in range(int(input())):
answer = 0
player1 = [0 for _ in range(10)]
player2 = [0 for _ in range(10)]
card_list = list(map(int, input().split()))
for i in range(12):
#2번 유저라면
if i & 1:
#카드얻은거 표시해주고
player2[card_list[i]] += 1
#체크
card_check(2, card_list[i])
# 1번 유저라면
else:
#카드얻은거 표시해주고
player1[card_list[i]] += 1
# 체크
card_check(1, card_list[i])
#우승자가 정해졌다면 반복문 중지
if answer: break
print('#{} {}'.format(t+1, answer))
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
최소생산비용 Python(SW Expert Academy, SWEA) (0) | 2020.05.24 |
---|---|
전기버스2 Python(SW Expert Academy, SWEA) (0) | 2020.05.23 |
화물 도크 Python(SW Expert Academy, SWEA) (0) | 2020.05.21 |
컨테이너 운반 Python(SW Expert Academy, SWEA) (0) | 2020.05.20 |
암호 Python(SW Expert Academy, SWEA) (0) | 2020.05.19 |
댓글