Skip to content

Commit 01ab872

Browse files
Merge pull request #751 from gmlrude/main
[박희경] 125차 라이브 코테 제출
2 parents 63cf12e + 7e7abd0 commit 01ab872

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"""
2+
인접하는 집의 색상이 같지 않다.
3+
dp
4+
"""
5+
import sys
6+
7+
input = sys.stdin.readline
8+
9+
cost = []
10+
n = int(input())
11+
for _ in range(n):
12+
cost.append(list(map(int, input().split())))
13+
14+
15+
dp = cost.copy()
16+
17+
18+
for i in range(1, n):
19+
20+
21+
22+
"""
23+
3
24+
26 40 83
25+
49 60 57
26+
13 89 99
27+
"""
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import sys
2+
import copy
3+
4+
input = sys.stdin.readline
5+
6+
7+
def flip(coins, line):
8+
for x, y in line:
9+
coins[x][y] = 'T' if coins[x][y] == 'H' else 'H'
10+
11+
12+
def dfs(coins, lines, idx, count, min_count):
13+
flat = sum(coins, [])
14+
if flat.count('T') == 9 or flat.count('H') == 9:
15+
return min(count, min_count)
16+
if idx == len(lines): # 더이상 뒤집을 줄이 없을 때
17+
return min_count
18+
19+
result = dfs(copy.deepcopy(coins), lines, idx+1, count, min_count) # 뒤집지 않고 다음 줄로 넘기는 경우
20+
21+
# 뒤집고 넘기는 경우
22+
flipped = copy.deepcopy(coins)
23+
flip(flipped, lines[idx])
24+
result = min(result, dfs(flipped, lines, idx+1, count+1, min_count))
25+
26+
return result
27+
28+
row_lines = [[(i, j) for j in range(3)] for i in range(3)]
29+
col_lines = [[(j, i) for j in range(3)] for i in range(3)]
30+
diag_lines = [[(i, i) for i in range(3)], [(i, 2 - i) for i in range(3)]]
31+
lines = row_lines + col_lines + diag_lines # 나올 수 있는 모든 경우의 수
32+
33+
t = int(input())
34+
for _ in range(t):
35+
coins = []
36+
for _ in range(3):
37+
coins.append(list(input().split()))
38+
res = dfs(coins, lines, 0, 0, float('inf'))
39+
if res != float('inf'):
40+
print(res)
41+
else:
42+
print(-1)

0 commit comments

Comments
 (0)