난이도 : D3
문제번호 : 5023
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
목차
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 |
댓글