🎭 [문제]
6장의 카드가 run과 triplet으로만 구성된 경우를 baby-gin으로 부른다.
[input]
3
667767
054060
101123
[output]
#1 1
#2 1
#3 0
## def함수와 while문 사용한 버전
import sys
sys.stdin = open("input.txt")
T = int(input())
def check_babygin(numbers):
# counter = [0] * 10
counter = [0 for _ in range(10)]
# babygin이었을 때 갯수 세어주기 위해 변수 설정
is_babysin = 0
# 예를들어, 숫자 6이 들어오면 6번째 counter의 인덱스에 +1
for number in numbers:
counter[number] += 1
idx = 0
while idx < len(counter):
# triplet 체크해주기
if counter[idx] >= 3:
# triplet인 카드를 체크해준 후 3장 버려주기
counter[idx] -= 3
is_babysin += 1
continue
# run 체크해주기
# 아래에 비교해주는 idx가 +2니까 8 이전까지만!
if idx < 8:
if counter[idx] and counter[idx+1] and counter[idx+2]:
# run체크 해준 후 해당 카드 3장 버리기
counter[idx] -= 1
counter[idx+1] -= 1
counter[idx+2] -= 1
is_babysin += 1
continue
# 만약 triple하나 run하나로 인해 2가 채워지면 return 1!
if is_babysin == 2:
return 1
idx += 1
if is_babysin != 2:
return 0
for tc in range(1, T+1):
numbers = list(map(int, input()))
result = check_babygin(numbers)
print("#{} {}".format(tc, result))
## for문만 사용한 버전
import sys
sys.stdin=open("input.txt")
T = int(input())
for tc in range(1, T+1):
zero_list = [0 for _ in range(10)]
numbers = input()
it_is_baby_gin = 0
# 숫자 카운트 증가
for i in numbers:
zero_list[int(i)] += 1
# 같은게 3개이면 + 1
for j in range(len(zero_list)):
# 만약 전부다 같아서 6이면 베이비진 = 2
if zero_list[j] == 6:
it_is_baby_gin = 2
break
if 3 <= zero_list[j] < 6:
it_is_baby_gin += 1
zero_list[j] -= 3
# 만약 베이비진=2가 아니면
if it_is_baby_gin != 2:
# 연속해서 있는 경우 베이비진 + 1
for k in range(len(zero_list)-2):
# 만약 1231232인 경우
if zero_list[k] == 2 and zero_list[k+1] == 2 and zero_list[k+2] == 2:
it_is_baby_gin = 2
break
# 아닌 경우
if 0 < zero_list[k] and 0 < zero_list[k+1] and 0 < zero_list[k+2]:
it_is_baby_gin += 1
zero_list[k] -= 1
zero_list[k+1] -= 1
zero_list[k+2] -= 1
# 베이비진이 2면 1, 아니면 0 출력
if it_is_baby_gin == 2:
print("#{} {}".format(tc, 1))
else:
print("#{} {}".format(tc, 0))
🍦 [복습]
# 1. 210224
if 0 < zero_list[k] and 0 < zero_list[k + 1] and 0 < zero_list[k + 2]:
it_is_baby_gin += 1
zero_list[k] -= 1
zero_list[k + 1] -= 1
zero_list[k + 2] -= 1
요 부분 주의하자!
run을 판별해낼 때 사용한 코드인데, 내가 자꾸 == 1 으로 적어버린다.
# 2. 210225
이번에도 == 1로 적어버렸다.. (#`-_ゝ-)
# 1. 210301
이번엔 위의 실수들을 하지 않았으나, babygin 판별 후 각 원소의 갯수를 빼주는 것을 까먹었었다..
'# 3. APS > SWEA' 카테고리의 다른 글
SWEA # Python_D2_4834_숫자 카드 ✅ (0) | 2021.02.17 |
---|---|
SWEA # Python_D2_4828_min max ✅ (0) | 2021.02.17 |
SWEA # Python_D2_1945_간단한 소인수분해 (while문) (0) | 2021.02.15 |
SWEA # Python_D1_2019_더블더블 ✅ (0) | 2021.02.15 |
SWEA # Python_D1_2029_몫과 나머지 출력하기 ✅ (0) | 2021.02.15 |