반응형
11454. Baby-gin Game
D2
비슷한 문제
2021.04.20 - [분류 전체보기] - SWEA 5203 베이비진 게임 (python)
문제
0~9 사이의 숫자 카드에서 임의의 카드 6장을 뽑았을 때
3장의 카드가 연속적인 번호를 갖는 경우를 run이라 하고
3장의 카드가 동일한 번호를 갖는 경우를 triplet이라고 한다.
그리고, 6장의 카드가 run과 triplet으로만 구성된 경우를 baby-gin으로 부른다.
6자리의 숫자를 입력 받아 baby-gin 여부를 판단하는 프로그램을 작성하라.
(baby-gin 일 경우 1, 아닌 경우 0 을 출력한다.)
[입력]
T
카드목록1
...
카드목록T
[출력]
# 1 {답}
...
# T {답}
풀이
T = int(input())
def check_babygin(numbers):
# counter = [0 for _in range(10)]
counter = [0]*10
# babygin 체크
is_babygin = 0
# 카드 장수 세는 과정?
for number in numbers:
# 숫자에 해당하는 인덱스에 각각 더해줌
counter[number] += 1
# counter 만큼 돌면서 체크
# for idx in range(len(counter)):
#
idx = 0
while idx < len(counter):
# triplet check
if counter[idx]>=3:
# 카드 세장 버리기
counter[idx] -= 3
# babygin 한걸음 다가가기
is_babygin += 1
# 숫자가 있는 한 계속 돌게 만들기 위해서 continue 삽입
continue
# run check
# 8,9는 확인할 필요가 없음(뒤에 카드가 없기 때문에)
if idx < 8:
if counter [idx] and counter [idx+1] and counter[idx+2]:
# 연속되는 카드 세장 하나씩 버리기
counter[idx] -= 1
counter[idx+1] -= 1
counter[idx+2] -= 1
# 베이비진에 한걸음 다가가기
is_babygin += 1
# run 역시 두번 체크하기 위한 컨티뉴
continue
# 중간 계산 중에 베이비진이 등장 했다면
if is_babygin == 2:
return 1
# 검증하고 나면 다음 idx로 넘어가기
idx += 1
#전부 돌때까지 베이비진이 등장하지 않았다면
if is_babygin !=2:
return 0
for tc in range(1, T+1):
numbers = list(map(int, input()))
# 0 과 1이 나오게 해야한다. (함수에서)
result = check_babygin(numbers)
print("#{} {}".format(tc, result ))
반응형
'Algorithm' 카테고리의 다른 글
BOJ 2217 로프 (python) (0) | 2021.04.20 |
---|---|
BOJ 9020 골드바흐의 추측 (python) (0) | 2021.04.20 |
SWEA 5203 베이비진 게임 (python) (0) | 2021.04.20 |
SWEA 5202 화물도크 (python) (0) | 2021.04.20 |
SWEA 5201 컨테이너 운반 (python) (0) | 2021.04.20 |