๋ฐ์ํ
๐ค๋ฌธ์ ํด๊ฒฐ
-
G4 | ์๋ฎฌ๋ ์ด์ , ๊ตฌํ
๋ฌธ์ ๋ฅผ ์ดํดํ๋๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๋ค.
- k๊ฐ์ด ๋ง๋์ง ํ์ธํ๊ณ ์๋๋ผ๋ฉด ์๊ฐ์ +1 ์ฆ๊ฐ์ํจ๋ค.
- R์ฐ์ฐ์ธ์ง C์ฐ์ฐ์ธ์ง ํ์ธํ๋ค.
- R ์ฐ์ฐ์ผ ๊ฒฝ์ฐ
- ๊ฐ ํ์ ์ซ์์ ํด๋น ์ซ์์ ๊ฐ์๋ฅผ ๋ฆฌ์คํธ๋ ํํ ํํ๋ก ์ ์ฅํ๋ค. [(1, 1), (2, 1)] ์ด๋ฐ์์ผ๋ก
- sort๋ฅผ ์ด์ฉํด ์ ๋ ฌํ๋ค.
- ํํ์ ํ์ด์ ์ซ์ ํ๋ํ๋์ ํํ๋ก ๋ฆฌ์คํธ์ ์ ์ฅํ๊ณ ๋๋จธ์ง ๊ธธ์ด๋ฅผ 0์ผ๋ก ์ฑ์๋ฃ๋๋ค.
- C ์ฐ์ฐ์ผ ๊ฒฝ์ฐ ํ๊ณผ ์ด์ ๋ฐ๊ฟ์ ์์ ๊ณผ์ ์ ๋๊ฐ์ด ์งํํ ํ ๋ค์ ํ๊ณผ ์ด์ ๋ฐ๊ฟ์ค๋ค.
๐ป์์ค ์ฝ๋
def is_k():
if r - 1 < len(arr) and c - 1 < len(arr[0]):
if arr[r - 1][c - 1] == k:
return True
return False
def update_arr():
# ๊ฐ์ ์ธ๊ธฐ
tmp_matrix = []
max_length = 0
for i in range(len(arr)):
numbers = set(arr[i])
tmp_lst = []
for num in numbers:
if num == 0:
continue
tmp_lst.append((num, arr[i].count(num)))
max_length = max(max_length, len(tmp_lst) * 2)
tmp_matrix.append(tmp_lst)
# ์ ๋ ฌํ๊ธฐ
for i in range(len(tmp_matrix)):
tmp_matrix[i].sort(key=lambda x: (x[1], x[0]))
# ๊ธธ์ด ๋ง์ถ๊ธฐ๊ณ ๋ฐฐ์ด์ ๋ฃ๊ธฐ
for i in range(len(tmp_matrix)):
tmp_lst = []
for j in range(len(tmp_matrix[i])):
tmp_lst.append(tmp_matrix[i][j][0])
tmp_lst.append(tmp_matrix[i][j][1])
tmp_lst.extend([0] * (max_length - len(tmp_lst)))
arr[i] = tmp_lst
if __name__ == '__main__':
r, c, k = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(3)]
time = 0
while time < 101:
# k ๊ฐ ๋ง๋์ง ํ์ธ
if is_k():
print(time)
break
time += 1 # ์๊ฐ ์ฆ๊ฐ
# R์ฐ์ฐ vs C์ฐ์ฐ
if len(arr) >= len(arr[0]): # ํ์ ๊ฐ์๊ฐ ์ด์ ๊ฐ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด
update_arr()
else: # ํ์ ๊ฐ์๊ฐ ์ด์ ๊ฐ์๋ณด๋ค ์ ์ผ๋ฉด
arr = list(map(list, zip(*arr))) # ํ๊ณผ ์ด ๋ฐ๊พธ๊ธฐ
update_arr()
arr = list(map(list, zip(*arr))) # ๋ค์ ํ๊ณผ ์ด ๋ฐ๊พธ๊ธฐ
else:
print(-1)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋ฐ์ํ
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] SWEA - 10580. ์ ๋ด๋ (0) | 2020.12.06 |
---|---|
[python] SWEA - 4047. ์์ค์ด์ ์นด๋ ์นด์ดํ (0) | 2020.12.01 |
[python] ๋ฐฑ์ค - 10819. ์ฐจ์ด๋ฅผ ์ต๋๋ก (0) | 2020.11.29 |
[python] ๋ฐฑ์ค - 18428. ๊ฐ์ ํผํ๊ธฐ (0) | 2020.11.28 |
[python] ๋ฐฑ์ค - 1916. ์ต์๋น์ฉ ๊ตฌํ๊ธฐ (0) | 2020.11.27 |