๐ณ ๋งํฌ
๐ ๋ฌธ์
๋น๊ณ ๊ฒ์์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
๋จผ์ ์๋์ ๊ฐ์ด 25๊ฐ์ ์นธ์ผ๋ก ์ด๋ฃจ์ด์ง ๋น๊ณ ํ์ 1๋ถํฐ 25๊น์ง ์์ฐ์๋ฅผ ํ ์นธ์ ํ๋์ฉ ์ด๋ค
๋ค์์ ์ฌํ์๊ฐ ๋ถ๋ฅด๋ ์๋ฅผ ์ฐจ๋ก๋ก ์ง์๋๊ฐ๋ค. ์๋ฅผ ๋ค์ด 5, 10, 7์ด ๋ถ๋ ธ๋ค๋ฉด ์ด ์ธ ์๋ฅผ ์ง์ด ๋ค ๋น๊ณ ํ์ ๋ชจ์ต์ ๋ค์๊ณผ ๊ฐ๋ค.
์ฐจ๋ก๋ก ์๋ฅผ ์ง์๊ฐ๋ค๊ฐ ๊ฐ์ ๊ฐ๋ก์ค, ์ธ๋ก์ค ๋๋ ๋๊ฐ์ ์์ ์๋ 5๊ฐ์ ๋ชจ๋ ์๊ฐ ์ง์์ง๋ ๊ฒฝ์ฐ ๊ทธ ์ค์ ์ ์ ๊ธ๋๋ค.
์ด๋ฌํ ์ ์ด ์ธ ๊ฐ ์ด์ ๊ทธ์ด์ง๋ ์๊ฐ "๋น๊ณ "๋ผ๊ณ ์ธ์น๋๋ฐ, ๊ฐ์ฅ ๋จผ์ ์ธ์น๋ ์ฌ๋์ด ๊ฒ์์ ์น์๊ฐ ๋๋ค.
์ฒ ์๋ ์น๊ตฌ๋ค๊ณผ ๋น๊ณ ๊ฒ์์ ํ๊ณ ์๋ค. ์ฒ ์๊ฐ ๋น๊ณ ํ์ ์ด ์๋ค๊ณผ ์ฌํ์๊ฐ ๋ถ๋ฅด๋ ์์ ์์๊ฐ ์ฃผ์ด์ง ๋, ์ฌํ์๊ฐ ๋ช ๋ฒ์งธ ์๋ฅผ ๋ถ๋ฅธ ํ ์ฒ ์๊ฐ "๋น๊ณ "๋ฅผ ์ธ์น๊ฒ ๋๋์ง๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐พ ํ์ด ๋ฐฉ๋ฒ
์ํค๋ ๋๋ก ๊ตฌํ๋ง ํด์, ์ ํผ ์ฝ๋์ธ์ง ๋ชจ๋ฅด๊ฒ ๋ค.
๊ทธ๋ฅ ๋จ์ํ numbers ๋ฆฌ์คํธ ์์ number๋ฅผ check๋ผ๋ ๋ฐฐ์ด์์ ๋๊ทธ๋ผ๋ฏธ์น ํ, (๋๊ทธ๋ผ๋ฏธ ์น๋ ํ์๋ฅผ 0->1๋ก ๊ตฌํํจ.) isBingo
๋ผ๋ ํจ์๋ฅผ ํตํด ๊ฐ๋ก, ์ธ๋ก, ์ ๋ฐฉํฅ ๋๊ฐ์ ์์ ๋น๊ณ ๊ฐ ๋๋์ง ํ์ธํด์ฃผ์๋ค.
solution ์ฝ๋
import sys
sys.stdin = open("input.txt","r")
def isBingo():
res = 0
# ๊ฐ๋ก ํ์ธ
for i in range(5):
flag = True
if 0 in check[i]:
flag = False
if flag:
res += 1
# ์ธ๋ก ํ์ธ
check_T = list(map(list,zip(*check)))
for i in range(5):
flag = True
if 0 in check_T[i]:
flag = False
if flag:
res += 1
# ๋๊ฐ์
r_flag, l_flag = True, True
for i in range(5):
if check[i][i] == 0:
r_flag = False
if check[i][4-i] == 0:
l_flag = False
if r_flag:
res += 1
if l_flag:
res += 1
if res >= 3:
return True
return False
bingo = list()
numbers = list()
check = [[0] * 5 for _ in range(5)]
count = 0
for _ in range(5):
bingo.append(list(map(int, sys.stdin.readline().split())))
for _ in range(5):
numbers.append(list(map(int, sys.stdin.readline().split())))
for number in numbers:
while number:
num = number.pop(0)
count += 1
for i in range(5):
for j in range(5):
if bingo[i][j] == num:
check[i][j] = 1
i = 5
break
if count >= 5:
if isBingo() == True:
print(count)
exit()