이론에서 나온 count list 방식을 이용하여 구하는 방법을 그대로 사용하였다.
특이한 점이라면 0~9까지의 카드를 쓰기 때문에 count list 길이는 10이 되어야 할 것 같지만 12로 했다. 그래야 run과 triplet을 동시에 검사할 때 [i] == [i+1] == [i+2] 를 이용할 시 index 범위를 넘어서 조사하는 일이 생기는데 이를 일일이 if문 예외로 걸러내기 귀찮아서 그랬다.
import sys
sys.stdin = open("sample_input.txt", "r")
def is_run_or_triplet(count_list):
for i in range(len(count_list)):
if (count_list[i] >= 1) and (count_list[i+1] >= 1) and (count_list[i+2] >= 1):
return True
if (count_list[i] >= 3):
return True
return False
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
# ///////////////////////////////////////////////////////////////////////////////////
full_list = list(map(int, input().split()))
fpc = [0] * 12
spc = [0] * 12
result = 0
for i in range(len(full_list)):
if i % 2 == 0:
fpc[full_list[i]] += 1
if is_run_or_triplet(fpc):
result = 1
break
else:
spc[full_list[i]] += 1
if is_run_or_triplet(spc):
result = 2
break
print("#{}".format(test_case),result)
# ///////////////////////////////////////////////////////////////////////////////////
댓글 없음:
댓글 쓰기