여름의 서재

5203_베이비진 게임 본문

알고리즘/SWEA

5203_베이비진 게임

엉아_ 2021. 10. 5. 20:55
728x90

📕 문제

https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

💡 풀이법

1. num_count1, 2라는 두 플레이어의 숫자 갯수 리스트를 만들어준다.

(0~9까지이므로 길이가 10인 리스트를 만듦)

2. 숫자 리스트를 처음부터 돌면서 짝수일때는 플레이어 1, 홀수일때는 플레이어 2의 숫자 갯수 리스트에 더해준다.

3. 그리고 babygin이라는 베이비진인지를 판별하는 함수를 만들어서 플레이어 1이 베이비진일때는 ans를 1로, 플레이어 2가 베이비진일때는 ans를 2로 설정하고 break를 한다.

4. for문을 다 돌때까지 둘다 베이비진이 되지 않는다면 ans의 초기 설정값인 0이 출력된다.

 

def babygin(lst, i):
    if lst[i] >= 3:
        return True
    if lst[i - 2] and lst[i - 1] and lst[i]:
        return True
    if i < 8 and lst[i] and lst[i + 1] and lst[i + 2]:
        return True
    if i < 9 and lst[i - 1] and lst[i] and lst[i + 1]:
        return True
    return False

T = int(input())
for tc in range(1, T+1):
    nums = list(map(int, input().split()))
    num_counts1 = [0] * 10
    num_counts2 = [0] * 10

    i = 0
    ans = 0
    for i in range(0, 12):
        if i % 2 == 0:
            num_counts1[nums[i]] += 1
            if babygin(num_counts1, nums[i]):
                ans = 1
                break
        else:
            num_counts2[nums[i]] += 1
            if babygin(num_counts2, nums[i]):
                ans = 2
                break
    print('#{} {}'.format(tc, ans))

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 5205_퀵 정렬  (0) 2021.10.07
[SWEA] 5205_병합 정렬  (0) 2021.10.07
[SWEA] 5201_컨테이너 운반  (0) 2021.10.05
[SWEA] 5202_화물 도크  (0) 2021.10.05
[SWEA] 5189_전자카트  (0) 2021.10.05
Comments