๐ ๋ฐฑ์ค 2578 - ๋น๊ณ
โก๏ธ ๋์ ํ์ด
๊ตฌํ๋ ฅ์ ๋ฌป๋ ๋ฌธ์ ์๋๋ฐ, 21.5.17.
๋ถํฐ ํ๊ธฐ ์์ํ๋ค ์ค๊ฐ์ ๋งํ boj_10703 ์ ์ฑ ๋ฌธ์ ๋ฅผ ํ๊ณ ๋ค์ ํธ๋๊น ๊ฐ์ด ์กํ์ ์ ๋ต ํ์ ์ ๋ฐ์ ๋ฌธ์ ๋ค. ์ด ๋ฌธ์ ์ ํต์ฌ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฌํ์๊ฐ ๋ถ๋ฅด๋ ์๋ฅผ ์ฐจ๋ก๋ก ์ง์๊ฐ๋ฉด์
check
ํ๋ค.(์๊ฐ ๋ถ๋ฆฌ๋ฉด0
์ผ๋ก ์ด๊ธฐํ์ํจ๋ค.) - ๋น๊ณ ๋ฅผ
check
ํ ๋ ๊ฐ๋ก, ์ธ๋ก, ๋๊ฐ์ ๊ฐ๊ฐcheck
ํ๋ค. ์ด๋, ํ ์ค ํน์ ํ ์ด ํน์ ํ ๋๊ฐ์ ์์ 0์ด 5๊ฐ๊ฐ ๋์ค๋ฉดbingo+=1
์ ํ๋ค. bingo >= 3
์ด๋ฉด ํด๋น ์ซ์๊ฐ ๋ช ๋ฒ์งธcnt
๋ ์ซ์์ธ์ง ์ถ๋ ฅํ๋ค.
๋ค์์ผ๋ก ๊ฐ๋ก, ์ธ๋ก, ๋๊ฐ์ ์์ bingo
๋ฅผ ํ๋จํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์.
- ๊ฐ๋ก(row):
count.('[0, 0, 0, 0, 0]')
์ด ๋๋ฉด+1
์ ํด์ฃผ์๋ค. ์ฃผ์ํ ์ ์ ํ๋ณํ๋ ค๋ ๊ฐ์str
ํ์ผ๋ก ๋ณํํ๋ค์count
๋ฅผ ์ฌ์ฉํ์. - ์ธ๋ก(column):
arr
์ ์ธ๋ก๋ก ๋๋ ค์ผํ๋๋ฐlambda
ํจ์๋ฅผ ์ฌ์ฉํด์ ์ด๋ก ๋ง๋ค์ด์ฃผ๊ณcount
ํจ์๋ฅผ ์ฌ์ฉํ๋ค. - ๋๊ฐ์ (diagonal): ๋๊ฐ์ ์ ์ฒด์ ํฉ์ด 0์ด ๋๋์ง๋ฅผ ํ์ธํ๋ค. ์ ๋๊ฐ์ ๋ฐฉํฅ, ์ญ ๋๊ฐ์ ๋ฐฉํฅ ๋ ๊ฐ์ง์ ๊ฒฝ์ฐ๋ฅผ ํ๋จํด์ผ ํ๋ค.
์ฒ์์๋ ์ ๋๊ฐ์
, ์ญ ๋๊ฐ์
ํ๋จ ๋ณ์๋ฅผ ๊ฐ๊ฐ ๋ฐ๋ก ์ค์ ํ๋๋ฐ, ๊ทธ๋ด ํ์๊ฐ ์์ด ๋ ๊ฒฝ์ฐ๋ฅผ ํฉ์ณ์ index
๋ฅผ 2๊ฐ ์ค๋ ๋์๋ค.
๋ฌธ์ ๋ฅผ ํ๋ค ๋ณด๋ฉด ๋๋ผ๊ฒ ์ง๋ง ์ด๋ฏธ bingo
๊ฐ ๋์๋ ๊ฐ์ ๋ ๋์ ์ํค๋ ์ํฉ์ด ์๊ธด๋ค. (์ด ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ์ค๋ ๊ฑธ๋ฆฐ ์ด์ ๋ ์ฌ๊ธฐ์ ๋งํ๊ธฐ ๋๋ฌธ์ด๋ค.) ๊ฒฐ๋ก ์ ์ผ๋ก check_row
, check_column
, check_diagonal
๋ณ์๋ฅผ ์ฌ์ฉํด์ bingo
๊ฐ ๋๋ ํ, ์ด, ๋๊ฐ์ index
๋ True
๋ก ๋ฐ๊ฟ๋๊ณ ๋ค์ bingo
๋ฅผ ํ๋จํ๋ ์กฐ๊ฑด์ bingo
์ด๋ฉด์ ํ, ์ด, ๋๊ฐ์ index
๊ฐ False
์ธ ๊ฐ๋ง ํต๊ณผํ๊ฒ ์ค์ ํ๋๋ ์ด์ bingo
๊ฐ ๋์ ์ด ๋๋ ์ผ์ ์์๋ค.
๋ง์ง๋ง์ผ๋กbingo
๊ฐ 3๊ฐ ์ด์๋๋ฉด break
๋์ exit
๋ฅผ ์ ์ธํด์ ์ ์ฒด ๋ฐ๋ณต๋ฌธ์ ๋๋ด๋ฒ๋ ธ๋ค.
์ ๋ต ํ์ ์ ๋ฐ๊ณ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ณด๋ค๊ฐ ์ฒ์ 4์ค ๋ฐ๋ณต๋ฌธ์ 3์ค ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋์ด๋์ ์ฌ๋๋ ์์๋ค. ๊ทธ ์ ์ ์ฐธ๊ณ ํด์ ์ด์ง ์์ ํ๋๋ฐ, MC
์ ๋ฆฌ์คํธ๋ฅผ 2์ฐจ์์ด ์๋ 1์ฐจ์์ผ๋ก ์ ์ธํ๊ณ ์ฒ์ ๋ฐ๋ณต๋ฌธ์ ๋ฒ์๋ฅผ 25
๊น์ง ์ค์ ํด๋์ ๋ค์์ ์์๋๋ก index
๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ด์๋ค. ์ฌํ์๋ ์ฐจ๋ก๋๋ก ์ซ์๋ฅผ ๋ถ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ตณ์ด 2์ฐจ์ ๋ฐฐ์ด์ ์ ์ธํ ํ์๊ฐ ์์๋ค. (์ด๋ป๊ฒ ์ด๋ฐ ์๊ฐ์.. ใทใท ๐ฅถ ๐ฅถ)
์ ์ฒด์ฝ๋๋ ํ๋จ์ ์ฐธ๊ณ ํ์.
# ๋์ ์ฝ๋
n = 5
arr = [list(map(int, input().split())) for _ in range(n)]
MC = [list(map(int, input().split())) for _ in range(n)]
bingo, order = 0, 0
check_row, check_column, check_diagonal = [False] * n, [False] * n, [False] * 2
def check(arr):
global bingo, check_diagonal
temp_right, temp_reverse = 0, 0
for i in range(n):
if str(arr[i]).count('[0, 0, 0, 0, 0]') and not check_row[i]: # check row
bingo += 1
check_row[i] = True
temp_column = list(map(lambda x: x[i], arr)) # check column
if str(temp_column).count('[0, 0, 0, 0, 0]') and not check_column[i]:
bingo += 1
check_column[i] = True
temp_right += arr[i][i] # check diagonal
temp_reverse += arr[i][n - i - 1]
if not temp_right and not check_diagonal[0]:
check_diagonal[0] = True
bingo += 1
if not temp_reverse and not check_diagonal[1]:
check_diagonal[1] = True
bingo += 1
return bingo
for numbers in MC:
for target in numbers:
for i in range(n):
for j in range(n):
if target == arr[i][j]:
arr[i][j] = 0
check(arr)
order += 1
if bingo >= 3:
print(order)
exit()
# ๋ด ์ฝ๋ + ๋ค๋ฅธ์ฌ๋์ ์ฝ๋
n = 5
arr = [list(map(int, input().split())) for _ in range(n)]
MC = []
for _ in range(5):
MC += list(map(int, input().split()))
bingo, order = 0, 0
check_row, check_column, check_diagonal = [False] * n, [False] * n, [False] * 2
def check(arr):
global bingo, check_diagonal
temp_right, temp_reverse = 0, 0
for i in range(n):
if str(arr[i]).count('[0, 0, 0, 0, 0]') and not check_row[i]: # check row
bingo += 1
check_row[i] = True
temp_column = list(map(lambda x: x[i], arr)) # check column
if str(temp_column).count('[0, 0, 0, 0, 0]') and not check_column[i]:
bingo += 1
check_column[i] = True
temp_right += arr[i][i] # check diagonal
temp_reverse += arr[i][n - i - 1]
if not temp_right and not check_diagonal[0]:
check_diagonal[0] = True
bingo += 1
if not temp_reverse and not check_diagonal[1]:
check_diagonal[1] = True
bingo += 1
return bingo
for target in range(25):
for i in range(5):
for j in range(5):
if MC[target] == arr[i][j]:
arr[i][j] = 0
check(arr)
order += 1
if bingo >= 3:
print(order)
exit()
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 3009 - ๋ค ๋ฒ์งธ ์ (0) | 2021.05.30 |
---|---|
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 1110 - ํ์ ์นธ (0) | 2021.05.28 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 10703 - ์ ์ฑ (0) | 2021.05.27 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2309 - ์ผ๊ณฑ ๋์์ด (1) | 2021.05.26 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 20291 - ํ์ผ ์ ๋ฆฌ (0) | 2021.05.24 |
๋๊ธ