보물창고 블로그

SW Expert Academy 4613 러시아 국기 같은 깃발 본문

알고리즘 풀이/SW Expert Academy

SW Expert Academy 4613 러시아 국기 같은 깃발

홋 메 2020. 1. 3. 13:24
728x90

문제 링크:https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWQl9TIK8qoDFAXj

 

SW Expert Academy

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

swexpertacademy.com

문제는 위의 링크에 나와있는 것과 같습니다.

제가 해결한 코드는 다음과 같습니다.

 

def check(n,m,c,floor,color):
    global count
    if floor==n:
        if count==0:
            count=c
        elif count>c:
            count=c
        return
    if color==3:
        c+=m-map1[floor].count('W')
        check(n,m,c,floor+1,2)
    elif n-floor==color:
        if color==2:
            c+=(2*m-(map1[-2].count('B')+map1[-1].count('R')))
            check(n,m,c,n,0)
        elif color==1:
            c+=(m-map1[-1].count('R'))
            check(n,m,c,n,0)
    elif color==2:
        new_c=c+(m-map1[floor].count('W'))
        check(n,m,new_c,floor+1,2)
        new_c=c+(m-map1[floor].count('B'))
        check(n,m,new_c,floor+1,1)
    elif color==1:
        new_c=c+(m-map1[floor].count('B'))
        check(n,m,new_c,floor+1,1)
        new_c=c+(m-map1[floor].count('R'))
        check(n,m,new_c,floor+1,0)
    elif color==0:
        new_c=c+(m-map1[floor].count('R'))
        check(n,m,new_c,floor+1,0)
        
        
        
    
t=int(input()) 
for test in range(1,t+1):
    count=0
    n,m=map(int,input().split())
    map1=[[0 for _ in range(m)] for _ in range(n)]
    for i in range(n):
        s=input()
        for j in range(m):
            map1[i][j]=s[j]
    check(n,m,0,0,3)
    print('#{} {}'.format(test,count))
Comments