Review
[1์ฐจ ์ฝ๋ ๋ฌธ์ ์ ]
1. ๋๊ฐ์ ์ฒดํฌ ์ธ๋ฑ์ค ์ค๋ฅ:
๋๊ฐ์ ์ฒดํฌ ํจ์์์ ์ธ๋ฑ์ค๊ฐ ์๋ชป๋์์ต๋๋ค.
check_dia1_list์ check_dia2_list์ ์ขํ๊ฐ ์๋ชป๋์์ต๋๋ค.
2. ํจ์์์ cnt ์ฆ๊ฐ ์์ ๋ฐ ๋ฆฌํด ์ค๋ฅ:
๊ฐ ์ฒดํฌ ํจ์์์ cnt๋ฅผ ์ฆ๊ฐ์ํค๊ณ True๋ฅผ ๋ฐํํ๋ ๋ถ๋ถ์ด ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.
return ๋ฌธ์ด ๋ฐ๋ณต๋ฌธ ์์ ์์ด์ ํ ๋ฒ๋ง ์ฒดํฌํ๊ณ ์ข
๋ฃ๋๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
3. ์ค๋ณต ์ฒดํฌ ๋ฐฉ์ง:
ํ ๋ฒ ์ฒดํฌ๋ ๋น๊ณ ๋ผ์ธ์ด ์ฌ๋ฌ ๋ฒ ์นด์ดํธ๋์ง ์๋๋ก ๊ฐ์ ํด์ผ ํฉ๋๋ค.
4. ์ค์ ๊ฐ๋ถํฐ ์์:
๋น๊ณ ํ์ ์ค์๋ถํฐ ๊ฐ์ ์ฒดํฌํด์ผ ํฉ๋๋ค.
โจ HOW? ์ฒ์ ์์ด๋์ด
๊ฐ๋ก, ์ธ๋ก, ๋๊ฐ์ ํ์ธํ๋ ํจ์ ๋ง๋ค๊ณ
๋์ ๋น๊ณ ํ์ ์ด์ค for๋ฌธ์ผ๋ก ๋๋ฉด์ ์ฌํ์๊ฐ ๋ถ๋ฅด๋ ์ซ์๋ฅผ queue๋ก ๋๊ณ ํ ๊ฐ์ฉ ๊บผ๋ด๋ฉด์ ๋น๊ต
์ฌํ์์ ์๋ฅผ ๋์ ๋น๊ณ ํ์์ ์ฒดํฌํ ๋ ๋ง๋ค, ํด๋น ์๋ 0์ผ๋ก ๋ฐ๊ฟ์ค๊ณ for๋ฌธ ๋๊ฐ๊ธฐ..
1์ฐจ Code - ์คํจ
from collections import deque
binggo = []
for _ in range(5):
binggo.append(list(map(int, input().split())))
check= deque()
for _ in range(5):
check_list = list(map(int, input().split()))
for c in check_list:
check.append(c)
cnt = 0
def check_row():
global cnt
for i in range(5):
binggo_check = True
for j in range(5):
if binggo[i][j] != 0:
binggo_check = False
if binggo_check:
cnt += 1
return True
def check_col():
global cnt
for i in range(5):
binggo_check = True
for j in range(5):
if binggo[j][i] != 0:
binggo_check = False
return
if binggo_check:
cnt += 1
return True
def check_dia1():
global cnt
check_dia1_list = [(1,1),(2,2),(3,3),(4,4),(5,5)]
binggo_check = True
for x, y in check_dia1_list:
if binggo[x][y] != 0:
binggo_check = False
return False
if binggo_check:
ans += 1
return True
def check_dia2():
global cnt
check_dia2_list = [(4,0),(3,1),(2,2),(1,3),(0,4)]
binggo_check = True
for x, y in check_dia2_list:
if binggo[x][y] != 0:
binggo_check = False
return False
if binggo_check:
cnt += 1
return True
ans = 0
while check:
go = check.popleft()
flag = False
for i in range(5):
for j in range(5):
if binggo[i][j] == go:
print("binggo[i][j]", binggo[i][j])
binggo[i][j] = 0
flag = True
ans += 1
break
if flag:
break
check_row()
print("check_row", cnt)
if cnt == 3:
print(ans)
break
check_col()
print("check_col", cnt)
if cnt == 3:
print(ans)
break
check_dia1()
print("check_dia1", cnt)
if cnt == 3:
print(ans)
break
check_dia2()
print("check_dia2", cnt)
if cnt == 3:
print(ans)
break
2์ฐจ Code - ์ ๋ต
from collections import deque
binggo = []
for _ in range(5):
binggo.append(list(map(int, input().split())))
check = deque()
for _ in range(5):
check_list = list(map(int, input().split()))
for c in check_list:
check.append(c)
def check_row():
global cnt
for i in range(5):
if all(binggo[i][j] == 0 for j in range(5)):
cnt += 1
def check_col():
global cnt
for i in range(5):
if all(binggo[j][i] == 0 for j in range(5)):
cnt += 1
def check_dia1():
global cnt
if all(binggo[i][i] == 0 for i in range(5)):
cnt += 1
def check_dia2():
global cnt
if all(binggo[i][4-i] == 0 for i in range(5)):
cnt += 1
ans = 0
while check:
go = check.popleft()
for i in range(5):
for j in range(5):
if binggo[i][j] == go:
binggo[i][j] = 0
break
else:
continue
break
cnt = 0
check_row()
check_col()
check_dia1()
check_dia2()
if cnt >= 3:
print(ans + 1)
break
ans += 1
3์ฐจ Code - ์ ๋ต+๊ฐ์
from collections import deque
binggo = []
for _ in range(5):
binggo.append(list(map(int, input().split())))
check = deque()
for _ in range(5):
check_list = list(map(int, input().split()))
for c in check_list:
check.append(c)
def check_bingo():
cnt = 0
for i in range(5):
if all(binggo[i][j] == 0 for j in range(5)):
cnt += 1
for i in range(5):
if all(binggo[j][i] == 0 for j in range(5)):
cnt += 1
if all(binggo[i][i] == 0 for i in range(5)):
cnt += 1
if all(binggo[i][4-i] == 0 for i in range(5)):
cnt += 1
return cnt
ans = 0
while check:
go = check.popleft()
found = False
for i in range(5):
if found:
break
for j in range(5):
if binggo[i][j] == go:
binggo[i][j] = 0
found = True
break
if check_bingo() >= 3:
print(ans + 1)
break
ans += 1
์๊ฐ๋ณต์ก๋
O(n)