ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/๋ฐฑ์ค
๋ฐฑ์ค: 17140 ์ด์ฐจ์ ๋ฐฐ์ด๊ณผ ์ฐ์ฐ
dirmathfl 2021. 3. 28. 18:29728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๋ฌธ์ ์์ ๋ฐฐ์ด A๊ฐ ์ฃผ์ด์ง๋ฉด, ๋ฐฐ์ด์ ํ, ์ด์ ์์ ๋ฐ๋ผ ์ ๋ ฌ์ ์ํ ํ ํ๋ ฌ์ ๊ฐ์ ์ถ๊ฐํ๋ค. ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํ์ ๊ฐ์๊ฐ ์ด์ ๊ฐ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ
- ๋ฐฐ์ด A์ ๋ชจ๋ ํ์ ๋ํด ์ ๋ ฌ์ ์ํํ๋ค
- ํ์ ๊ฐ์๊ฐ ์ด์ ๊ฐ์๋ณด๋ค ์์ ๊ฒฝ์ฐ
- ๋ฐฐ์ด A์ ๋ชจ๋ ์ด์ ๋ํด ์ ๋ ฌ์ ์ํํ๋ค.
- ์ ๋ ฌ์ ์ํด์๋ ํ ํ ๋๋ ํ ์ด์ ์์ ๋ฑ์ฅ ํ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค.
- (count, number)์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค.
- ์ ๋ ฌํ ๋, 0์ ๋ฌด์ํ๋ค.
- ๋ณํ๋ ํ์ด์ A์ ๋ฐํํ ๋, ๊ฐ์ฅ ๊ธธ์ด๊ฐ ๊ธด ํ ๋๋ ์ด์ ๊ธฐ์ค์ผ๋ก 0์ผ๋ก ์ฑ์ด๋ค.
์ด์ ๊ฐ์ ๊ณผ์ ์ 100๋ฒ(์ด)๋งํผ ์งํํ๊ณ , `A[R][C] == K`๊ฐ ๋๋ ๋ต์ ์ฐพ์ง ๋ชปํ๋ค๋ฉด -1์ ๋ฐํํ๋ค. ์ด๊ธฐ์ ๋ฌธ์ ๋ฅผ ์ ๊ทผํ ๋, ์์ 6์ ์๊ฐํ์ง ์์์ ๋ฌธ์ ๋ฅผ ํ์ง ๋ชปํ๋ค. ํ์ด์ ํฌ๊ธฐ๊ฐ 100์ ๋๋ ๊ฒฝ์ฐ, ์ฒ์ 100๊ฐ๋ฅผ ์ ์ธํ ๋๋จธ์ง๋ ์๋ผ๋ด์ผ ํ๋ ์ ํ ์ฌํญ์ ๋ฐ์ํ์ง ์์๋๋ฐ๋ ๋ง์์ต๋๋ค๊ฐ ๋ ์ ๋นํฉํ๋ค.๐ค
์ฝ๋
from sys import stdin
from copy import deepcopy
from collections import Counter
from itertools import chain
def check_answer() -> bool:
'''
4 4 1
1 2 1
2 1 3
3 3 3
์ด์ ๊ฐ์ ์์๋ฅผ ์๊ฐํ์ง ์์ผ๋ฉด, ์ฒ์ ๋ถํฐ ๋ฐํ์ ์๋ฌ ๋ฐ์!
'''
if R < num_rows() and C < num_columns():
return A[R][C] == K
return 0
def num_rows() -> int:
return len(A)
def num_columns() -> int:
return len(A[0])
def calc(cur_dir: str):
global A
temp = []
max_len = 0
# ๋ฐฉํฅ์ด ์ด์ธ ๊ฒฝ์ฐ, ์๋ ๋ก์ง์ ๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ด์ ํ
cur_matrix = A if cur_dir == "row" else list(map(list, zip(*A)))
for nums in cur_matrix:
# ๊ฐ ์์๋ฅผ ์นด์ดํธ ํ ํ, ์ซ์๊ฐ 0 ์ด์์ธ ๊ฒฝ์ฐ๋ง (์นด์ดํธ, ์ซ์) ์์ผ๋ก ์ ๋ ฌ
cur_nums = list(chain(*sorted(Counter(filter(lambda x: x > 0, nums)).items(), key=lambda x: (x[1], x[0]))))
max_len = max(len(cur_nums), max_len)
temp.append(cur_nums)
# ๋ถ์กฑํ ๋ถ๋ถ์ 0์ผ๋ก ์ฑ์ฐ๋ ๊ณผ์ ํ์
for idx, nums in enumerate(temp):
cur_len = len(nums)
if cur_len < max_len:
temp[idx] += [0] * (max_len - cur_len)
# ํ์ด์ ์ ํํ ๊ฒฝ์ฐ, ๋ค์ ์์ํ๋ก ์ ํ
if cur_dir == "column":
temp = list(map(list, zip(*temp)))
A = deepcopy(temp)
if __name__ == '__main__':
R, C, K = map(int, stdin.readline().split())
R -= 1
C -= 1
A = [list(map(int, stdin.readline().split())) for _ in range(3)]
# ์ฒ์ ๋ถํฐ ์ ๋ต์ธ ๊ฒฝ์ฐ
if check_answer():
print(0)
exit(0)
# ์กฐ๊ฑด์ ๋ฐ๋ผ, ์๋ฎฌ๋ ์ด์
์ด ํ์ํ ๊ฒฝ์ฐ
for cur_time in range(100):
direction = "row" if num_rows() >= num_columns() else "column"
calc(direction)
if check_answer():
print(cur_time + 1)
exit(0)
# 100์ด ํ์๋ ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ
else:
print(-1)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2186 ๋ฌธ์ํ (0) | 2021.04.02 |
---|---|
๋ฐฑ์ค: 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋ (0) | 2021.03.31 |
๋ฐฑ์ค: 8980 ํ๋ฐฐ (0) | 2021.03.19 |
๋ฐฑ์ค: 2141 ์ฐ์ฒด๊ตญ (0) | 2021.03.19 |
๋ฐฑ์ค: 11000 ๊ฐ์์ค ๋ฐฐ์ (0) | 2021.03.15 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ