λ¬Έμ
NxN ν¬κΈ°μ 볡λκ° μλ€. 볡λλ 1x1 ν¬κΈ°μ μΉΈμΌλ‘ λλμ΄μ§λ©°, νΉμ ν μμΉμλ μ μλ, νμ, νΉμ μ₯μ λ¬Όμ΄ μμΉν μ μλ€. νμ¬ λͺ λͺ μ νμλ€μ μμ μκ°μ λͺ°λ 볡λλ‘ λΉ μ Έλμλλ°, 볡λλ‘ λΉ μ Έλμ¨ νμλ€μ μ μλμ κ°μμ λ€ν€μ§ μλ κ²μ΄ λͺ©νμ΄λ€.
κ° μ μλλ€μ μμ μ μμΉμμ μ, ν, μ’, μ° 4κ°μ§ λ°©ν₯μΌλ‘ κ°μλ₯Ό μ§ννλ€. λ¨, 볡λμ μ₯μ λ¬Όμ΄ μμΉν κ²½μ°, μ μλμ μ₯μ λ¬Ό λ€νΈμ μ¨μ΄ μλ νμλ€μ λ³Ό μ μλ€. λν μ μλμ μ, ν, μ’, μ° 4κ°μ§ λ°©ν₯μ λνμ¬, μ무리 λ©λ¦¬ μλλΌλ μ₯μ λ¬Όλ‘ λ§νκΈ° μ κΉμ§μ νμλ€μ λͺ¨λ λ³Ό μ μλ€κ³ κ°μ νμ.
λ€μκ³Ό κ°μ΄ 3x3 ν¬κΈ°μ 볡λμ μ λ³΄κ° μ£Όμ΄μ§ μν©μ νμΈν΄λ³΄μ. λ³Έ λ¬Έμ μμ μμΉ κ°μ λνλΌ λλ (ν,μ΄)μ ννλ‘ νννλ€. μ μλμ΄ μ‘΄μ¬νλ μΉΈμ T, νμμ΄ μ‘΄μ¬νλ μΉΈμ S, μ₯μ λ¬Όμ΄ μ‘΄μ¬νλ μΉΈμ Oλ‘ νμνμλ€. μλ κ·Έλ¦Όκ³Ό κ°μ΄ (3,1)μ μμΉμλ μ μλμ΄ μ‘΄μ¬νλ©° (1,1), (2,1), (3,3)μ μμΉμλ νμμ΄ μ‘΄μ¬νλ€. κ·Έλ¦¬κ³ (1,2), (2,2), (3,2)μ μμΉμλ μ₯μ λ¬Όμ΄ μ‘΄μ¬νλ€.
μ΄ λ (3,3)μ μμΉμ μ‘΄μ¬νλ νμμ μ₯μ λ¬Ό λ€νΈμ μ¨μ΄ μκΈ° λλ¬Έμ κ°μλ₯Ό νΌν μ μλ€. νμ§λ§ (1,1)κ³Ό (2,1)μ μμΉμ μ‘΄μ¬νλ νμμ μ μλμκ² λ€ν€κ² λλ€.
νμλ€μ 볡λμ λΉ μΉΈ μ€μμ μ₯μ λ¬Όμ μ€μΉν μμΉλ₯Ό 골λΌ, μ νν 3κ°μ μ₯μ λ¬Όμ μ€μΉν΄μΌ νλ€. κ²°κ³Όμ μΌλ‘ 3κ°μ μ₯μ λ¬Όμ μ€μΉνμ¬ λͺ¨λ νμλ€μ κ°μλ‘λΆν° νΌνλλ‘ ν μ μλμ§ κ³μ°νκ³ μ νλ€. NxN ν¬κΈ°μ 볡λμμ νμ λ° μ μλμ μμΉ μ λ³΄κ° μ£Όμ΄μ‘μ λ, μ₯μ λ¬Όμ μ νν 3κ° μ€μΉνμ¬ λͺ¨λ νμλ€μ΄ μ μλλ€μ κ°μλ₯Ό νΌνλλ‘ ν μ μλμ§ μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μλ₯Ό λ€μ΄ N=5μΌ λ, λ€μκ³Ό κ°μ΄ μ μλ λ° νμμ μμΉ μ λ³΄κ° μ£Όμ΄μ‘λ€κ³ κ°μ νμ.
μ΄ λ λ€μκ³Ό κ°μ΄ 3κ°μ μ₯μ λ¬Όμ μ€μΉνλ©΄, λͺ¨λ νμλ€μ μ μλμ κ°μλ‘λΆν° νΌνλλ‘ λ§λ€ μ μλ€.
μ λ ₯
첫째 μ€μ μμ°μ Nμ΄ μ£Όμ΄μ§λ€. (3 ≤ N ≤ 6) λμ§Έ μ€μ Nκ°μ μ€μ κ±Έμ³μ 볡λμ μ λ³΄κ° μ£Όμ΄μ§λ€. κ° νμμλ Nκ°μ μμκ° κ³΅λ°±μ κΈ°μ€μΌλ‘ ꡬλΆλμ΄ μ£Όμ΄μ§λ€. ν΄λΉ μμΉμ νμμ΄ μλ€λ©΄ S, μ μλμ΄ μλ€λ©΄ T, μ무κ²λ μ‘΄μ¬νμ§ μλλ€λ©΄ Xκ° μ£Όμ΄μ§λ€.
λ¨, μ 체 μ μλμ μλ 5μ΄νμ μμ°μ, μ 체 νμμ μλ 30μ΄νμ μμ°μμ΄λ©° νμ λΉ μΉΈμ κ°μλ 3κ° μ΄μμΌλ‘ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ μ νν 3κ°μ μ₯μ λ¬Όμ μ€μΉνμ¬ λͺ¨λ νμλ€μ κ°μλ‘λΆν° νΌνλλ‘ ν μ μλμ§μ μ¬λΆλ₯Ό μΆλ ₯νλ€. λͺ¨λ νμλ€μ κ°μλ‘λΆν° νΌνλλ‘ ν μ μλ€λ©΄ "YES", κ·Έλ μ§ μλ€λ©΄ "NO"λ₯Ό μΆλ ₯νλ€.
λ¬Έμ νμ΄
import sys
from itertools import combinations
n=int(sys.stdin.readline())
pos=[list(sys.stdin.readline().strip().split(' ')) for _ in range(n)]
def avoid_teacher(position):
global n
directions=[(0,1),(1,0),(-1,0),(0,-1)]
for i in range(n):
for j in range(n):
if position[i][j]=='T':
# μ μλμ΄λ©΄ νμμ λλ¬ν μ μλμ§ μ²΄ν¬
for dir in directions:
dy=i+dir[0]
dx=j+dir[1]
while 0<=dy<n and 0<=dx<n:
# μ₯μ λ¬Όμ λ§λλ©΄ break
if position[dy][dx]=='O':
break
elif position[dy][dx]=='S':
return False
dy+=dir[0]
dx+=dir[1]
else:
return True
object=[]
for i in range(n):
for j in range(n):
if pos[i][j]=='X':
object.append((i,j))
# object λ°°μ΄μ λ΄κΈ΄ νλ³΄λ€ μ€ 3κ° μ ν
nCr=list(combinations(object,3))
for o1,o2,o3 in nCr:
pos[o1[0]][o1[1]] = 'O'
pos[o2[0]][o2[1]] = 'O'
pos[o3[0]][o3[1]] = 'O'
if avoid_teacher(pos):
print('YES')
sys.exit(0)
pos[o1[0]][o1[1]] = 'X'
pos[o2[0]][o2[1]] = 'X'
pos[o3[0]][o3[1]] = 'X'
else:
print('NO')
1. itertoolsμ combinationsλ₯Ό μ΄μ©ν΄μ μ₯μ λ¬Όμ λμ μ μλ μμΉ(pos[i][j]=='X'μΈ μμΉ)κ° λ΄κΈ΄ objectμμ κ°λ₯ν μ‘°ν© 3κ°λ₯Ό
λ½μλΈλ€.
2. λ½μλΈ μ‘°ν©λ€μ νμνλ©΄μ ν΄λΉ μμΉμ 'O' νμλ₯Ό νλ€.
3. avoid_teacher ν¨μλ₯Ό μ΄μ©ν΄μ ν΄λΉ μμΉμ μ₯μ λ¬Όμ λμΌλ©΄ νμλ€μ΄ λͺ¨λ μ¨μ μ μλ νμΈνλ€.
- μ μλκ³Ό νμ, μ₯μ λ¬Όμ μμΉκ° νμλ pos 2μ°¨μ λ°°μ΄μ νμνλ©΄μ, μ μλμΌ κ²½μ° μνμ’μ° λ°©ν₯μ μ°¨λ‘λ‘ νμνλ©΄μ νμμ μ°ΎκΈ° μ μ μ₯μ λ¬Όμ λλ¬ν΄μ breakλ₯Ό ν΅νκ±°λ ν΄λΉ λ°©ν₯μ λͺ¨λ ν λλ μ΄μ νμνκ³ whileλ¬Έμ λΉ μ Έλμ λ€μ λ°©ν₯μ νμνλ€.
- μνμ’μ° μ°¨λ‘λ‘ νμνλ€ νμμ λ§λ κ²½μ°, μ μλμ κ°μ κ°λ₯ λ²μ μμ νμμ΄ μλ κ²μ΄λ―λ‘ return False
- μ€κ°μ return λμ§ μκ³ , νμλ€μ΄ λͺ¨λ μ¨μ μ μλ κ²½μ° return True
4. avoid_teacherκ° Trueλ₯Ό λ°ννλ©΄ 'YES'λ₯Ό μΆλ ₯νκ³ νλ‘κ·Έλ¨ μ’ λ£.
5. avoid_teacherκ° Falseλ₯Ό λ°ννλ©΄ 'O' νμνλ μμΉλ₯Ό λ€μ 'X'λ‘ λ°κΏμ£Όκ³ λ€λ₯Έ μμΉλ‘ λ°λ³΅λ¬Έ μν
6. λͺ¨λ μμΉμμ avoid_teacherκ° Falseλ₯Ό λ°ννλ©΄ 'NO'λ₯Ό μΆλ ₯νκ³ νλ‘κ·Έλ¨ μ’ λ£.
'μκ³ λ¦¬μ¦ > ꡬν' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€ 7682 π₯] ν±νν (0) | 2023.08.03 |
---|---|
[λ°±μ€ 14719 π₯] λΉλ¬Ό (0) | 2023.08.01 |
[λ°±μ€ 8911 π₯] κ±°λΆμ΄ (0) | 2023.07.31 |
[λ°±μ€ 3190 π₯] λ± (0) | 2023.07.06 |
[λ°±μ€ 16967 π₯] λ°°μ΄ λ³΅μνκΈ° (0) | 2023.07.05 |