-
[백준-python] 1018번: 체스판 다시 칠하기Problem Solving/브루트포스 2022. 1. 24. 23:05
- 분류 - 브루트포스
- 난이도 - 실버5
4중 반복문은 처음 써본다... 더 심플한 풀이 없나 찾아봐야겠다.
답안 코드
n,m = map(int, input().split()) board=[] for _ in range(n): board.append(list(input())) min_cnt=2500 # 시작점을 (0,0)~(n-8, m-8)로 설정하면서 각 경우의 색칠 횟수를 구하고, 최솟값을 저장함 for r in range(n-8+1): for c in range(m-8+1): cnt=0 # 시작점의 값을 W로 설정할 때 for row in range(r, r+8): for col in range(c, c+8): if ((row%2 == 1 and col%2 == 0) or (row%2 == 0 and col%2 == 1)) and board[row][col] != 'B': cnt=cnt+1 if ((row%2 == 0 and col%2 == 0) or (row%2 == 1 and col%2 == 1)) and board[row][col] != 'W': cnt=cnt+1 min_cnt = cnt if cnt<min_cnt else min_cnt cnt=0 # 시작점의 값을 B로 설정할 때 for row in range(r, r+8): for col in range(c, c+8): if ((row%2 == 1 and col%2 == 0) or (row%2 == 0 and col%2 == 1)) and board[row][col] != 'W': cnt=cnt+1 if ((row%2 == 0 and col%2 == 0) or (row%2 == 1 and col%2 == 1)) and board[row][col] != 'B': cnt=cnt+1 min_cnt = cnt if cnt<min_cnt else min_cnt print(min_cnt)
'Problem Solving > 브루트포스' 카테고리의 다른 글
브루트포스(brute force search)란? (0) 2022.02.07 [백준-python] 1436번: 영화감독 숌 (0) 2022.01.27 [백준-python] 7568번: 덩치 (0) 2022.01.24 [백준-python] 2231번: 분해합 (0) 2022.01.24 [백준-python] 2798번: 블랙잭 (0) 2022.01.23