π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[BAEKJOON python] 17140_μ΄μ°¨μ λ°°μ΄κ³Ό μ°μ° λ³Έλ¬Έ
π¦₯ μ½ν
/BAEKJOON
[BAEKJOON python] 17140_μ΄μ°¨μ λ°°μ΄κ³Ό μ°μ°
μ§μ§μνμΉ΄ 2023. 4. 5. 23:04728x90
λ°μν
μ΄μ°¨μ λ°°μ΄κ³Ό μ°μ°
ν¬κΈ°κ° 3×3μΈ λ°°μ΄ A
λ°°μ΄μ μΈλ±μ€λ 1λΆν° μμ
1μ΄κ° μ§λ λλ§λ€ λ°°μ΄μ μ°μ°μ΄ μ μ©
R μ°μ°: λ°°μ΄ Aμ λͺ¨λ νμ λν΄μ μ λ ¬μ μν
νμ κ°μ ≥ μ΄μ κ°μμΈ κ²½μ°μ μ μ©
C μ°μ°: λ°°μ΄ Aμ λͺ¨λ μ΄μ λν΄μ μ λ ¬μ μν
νμ κ°μ < μ΄μ κ°μμΈ κ²½μ°μ μ μ©
ν ν λλ μ΄μ μλ μλ₯Ό μ λ ¬νλ €λ©΄, κ°κ°μ μκ° λͺ λ² λμλμ§ μμμΌν¨
μμ λ±μ₯ νμκ° μ»€μ§λ μμΌλ‘, κ·Έλ¬ν κ²μ΄ μ¬λ¬κ°μ§λ©΄ μκ° μ»€μ§λ μμΌλ‘ μ λ ¬
λ°°μ΄ Aμ μ λ ¬λ κ²°κ³Όλ₯Ό λ€μ λ£μ΄μΌ ν¨
μ λ ¬λ κ²°κ³Όλ₯Ό λ°°μ΄μ λ£μ λλ, (μμ λ±μ₯ νμ)λ₯Ό λͺ¨λ λ£μΌλ©°, μμλ μκ° λ¨Όμ
ν λλ μ΄μ ν¬κΈ°κ° 100μ λμ΄κ°λ κ²½μ°μλ μ²μ 100κ°λ₯Ό μ μΈν λλ¨Έμ§λ λ²λ¦Ό
λ°°μ΄ Aμ λ€μ΄μλ μμ r, c, kκ° μ£Όμ΄μ‘μ λ, A[r][c]μ λ€μ΄μλ κ°μ΄ kκ° λκΈ° μν μ΅μ μκ°
첫째 μ€μ r, c, kκ° μ£Όμ΄μ§λ€. (1 ≤ r, c, k ≤ 100)
λμ§Έ μ€λΆν° 3κ°μ μ€μ λ°°μ΄ Aμ λ€μ΄μλ μ
λ°°μ΄ Aμ λ€μ΄μλ μλ 100λ³΄λ€ μκ±°λ κ°μ μμ°μ
arr = [[0] * 101 for _ in range(101)]
# A[r][c]μ λ€μ΄μλ κ°μ΄ k
r, c, k = map(int, input().split())
# μ²μμλ 3 x 3 μ΄λ€
start_r = 3
start_c = 3
for i in range(1, 4):
aa, bb, cc = map(int, input().split())
# λ£μ΄ λ²μ―~
arr[i][1] = aa
arr[i][2] = bb
arr[i][3] = cc
cnt = 0
def car_r():
global start_r, start_c
r, c = start_r, start_c
r_c = -1
for i in range(1, r + 1):
# ν΄λΉ μ΄ μ« λ½μ
data = arr[i][1:c + 1]
# κ° κ°μ λν λΉλκ° μ²΄ν¬
dict = {data[j]: data.count(data[j]) for j in range(len(data))}
if 0 in dict.keys():
dict.pop(0)
tp = list(dict.items())
# (μμ λ±μ₯ νμ)
tp.sort(key=lambda x: (x[1], x[0]))
if len(tp) > 50:
l = 50
else:
l = len(tp)
r_c = max(r_c, l * 2)
temp = []
for t in range(l):
a, b = tp[t]
temp.append(a)
temp.append(b)
arr[i][1:l * 2] = temp
for t in range(l * 2 + 1, 101):
arr[i][t] = 0
start_c = r_c
def car_c():
global start_r, start_c
r, c = start_r, start_c
r_c = -1
for i in range(1, c + 1):
data = []
for j in range(1, r + 1):
data.append(arr[j][i])
# κ° κ°μ λν λΉλκ° μ²΄ν¬
dict = {data[j]: data.count(data[j]) for j in range(len(data))}
if 0 in dict.keys():
dict.pop(0)
tp = list(dict.items())
# (μμ λ±μ₯ νμ)
tp.sort(key=lambda x: (x[1], x[0]))
if len(tp) > 50:
l = 50
else:
l = len(tp)
r_c = max(r_c, l * 2)
temp = []
for t in range(l):
a, b = tp[t]
temp.append(a)
temp.append(b)
for t in range(len(temp)):
arr[t + 1][i] = temp[t]
for t in range(l * 2 + 1, 101):
arr[t][i] = 0
start_r = r_c
while True:
if cnt > 100:
print(-1)
break
if arr[r][c] == k:
print(cnt)
break
if start_r >= start_c:
car_r()
cnt += 1
else:
car_c()
cnt += 1
μμ μ λ ₯
1 2 4
1 2 1
2 1 3
3 3 3
μμ μΆλ ₯
52
https://developer-ellen.tistory.com/61
μ΄ λΆκΊΌ μ°Έκ³ ν¨..
κ·Όλ° μ΄λ²κ» λ무 μ΄λ €μλΈ .. λ€λ₯Έκ±Έλ‘ νΌκ±° μλλ°
그건 λ°νμ μλ¬ λ¨λλ.γ
728x90
λ°μν
'π¦₯ μ½ν > BAEKJOON' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BAEKJOON python] 17837_μλ‘μ΄ κ²μ 2 (0) | 2023.04.06 |
---|---|
[BAEKJOON python] 17142_μ°κ΅¬μ 3 (0) | 2023.04.05 |
[BAEKJOON python] 17143_λμμ (0) | 2023.04.05 |
[BAEKJOON python] 16234_μΈκ΅¬ μ΄λ (0) | 2022.10.14 |
[BAEKJOON python] 15686_μΉν¨ λ°°λ¬ (0) | 2022.10.14 |
Comments