728x90

< 처음 풀 때 >

수학적 방식이 아닌 64개의 문자만 체크 하면 되기에 문자열을 직접 구해서 계산하려고 했으나 8X8 의 체스판을 구하는 과정에서 막혔다.

 

< 해결 방법 >

체스판을 구하는 부분에서 여전히 막혀서 다른 사람의 풀이를 참조했다. set 의 차이를 이용해서 다른 값의 개수를 구했고 다행히 시간 초과 없이 답은 잘 나왔다.

 
import sys
 
a,b = map(int,sys.stdin.readline().rstrip().split(" "))
 
k = [ ]
def check(n):
 
    one = 'WBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBW'
    two = 'BWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWB'
 
    q = 0
    w = 0
 
    for i in range(0,len(list(n))):
        if n[i] != list(one)[i]:
            q+=1
        if n[i] != list(two)[i]:
            w+=1    
 
    return min(q,w)
 
for i in range(0,int(a)):
    k.append(sys.stdin.readline().rstrip())
 
ans = 1000
 
for i in range(a-7):
    for j in range(b-7):
        m = ""
        for q in range(i, i+8):
            for w in range(j, j+8):
                m += k[q][w]
 
        answer = check(m)
        if answer<ans:
            ans = answer
 
print(ans)
728x90

+ Recent posts