🧐 CodingTest

Python_ [CodeUp 기초 100제] 6096 : λ°”λ‘‘μ•Œ μ‹­μž λ’€μ§‘κΈ°

._.sori 2025. 6. 27. 15:00

 

♣ 문제

λΆ€λͺ¨λ‹˜μ„ κΈ°λ‹€λ¦¬λ˜ μ˜μΌμ΄λŠ” κ²€μ •/흰 색 λ°”λ‘‘μ•Œμ„ λ°”λ‘‘νŒμ— 꽉 μ±„μ›Œ κΉ”μ•„ 놓고 놀닀가...

"μ‹­(+)자 λ’€μ§‘κΈ°λ₯Ό ν•΄λ³ΌκΉŒ?"ν•˜κ³  μƒκ°ν–ˆλ‹€.

μ‹­μž λ’€μ§‘κΈ°λŠ”
κ·Έ μœ„μΉ˜μ— μžˆλŠ” λͺ¨λ“  κ°€λ‘œμ€„ 돌의 색을 λ°˜λŒ€(1->0, 0->1)둜 λ°”κΎΌ ν›„, 
λ‹€μ‹œ κ·Έ μœ„μΉ˜μ— μžˆλŠ” λͺ¨λ“  μ„Έλ‘œμ€„ 돌의 색을 λ°˜λŒ€λ‘œ λ°”κΎΈλŠ” 것이닀.
μ–΄λ–€ μœ„μΉ˜λ₯Ό 골라 μ§‘μž λ’€μ§‘κΈ°λ₯Ό ν•˜λ©΄, κ·Έ μœ„μΉ˜λ₯Ό μ œμ™Έν•œ κ°€λ‘œμ€„κ³Ό μ„Έλ‘œμ€„μ˜ 색이 λͺ¨λ‘ λ°˜λŒ€λ‘œ 바뀐닀.

λ°”λ‘‘νŒ(19 * 19)에 흰 돌(1) λ˜λŠ” κ²€μ • 돌(0)이 λͺ¨λ‘ 꽉 μ±„μ›Œμ Έ λ†“μ—¬μžˆμ„ λ•Œ,
n개의 μ’Œν‘œλ₯Ό μž…λ ₯λ°›μ•„ μ‹­(+)자 λ’€μ§‘κΈ°ν•œ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•΄λ³΄μž.

 

 

♣ μž…λ ₯

λ°”λ‘‘μ•Œμ΄ κΉ”λ € μžˆλŠ” 상황이 19 * 19 크기의 μ •μˆ˜κ°’μœΌλ‘œ μž…λ ₯λœλ‹€.
μ‹­μž λ’€μ§‘κΈ° 횟수(n)κ°€ μž…λ ₯λœλ‹€.
μ‹­μž λ’€μ§‘κΈ° μ’Œν‘œκ°€ 횟수(n) 만큼 μž…λ ₯λœλ‹€. 단, n은 10μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€.

2

10 10
12 12

 

 

♣ 좜λ ₯

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

 

 

♣ 내풀이

cross = [list(map(int, input().split())) for _ in range(19)]
n = int(input())

for i in range(n):
    x, y = map(int, input().split())
    
    # λ¦¬μŠ€νŠΈλŠ” 0λΆ€ν„° μ‹œμž‘ν•œλ‹€
    # 그런데 μž…λ ₯은 1λΆ€ν„° μ‹œμž‘ν•œλ‹€.
    # 리슀트의 인덱슀 값에 μž…λ ₯값을 λ§žμΆ”κΈ° μœ„ν•΄ μž…λ ₯κ°’-1을 해쀬닀.
    x -= 1 
    y -= 1
    
    # 0인 값은 1둜 λ³€κ²½λ˜λ„λ‘ ν•˜κ³ , 1인 값은 0으둜 λ³€κ²½λ˜λ„λ‘ ν•œλ‹€.
    # ꡳ이 if문으둜 0인지 1인지 ν™•μΈν•˜μ§€ μ•Šκ³ , κ°’μ˜ 1을 λΉΌμ„œ 0κ³Ό 1을 λ§Œλ“€μ–΄μ€€λ‹€.
    for j in range(19):
        cross[j][y] = 1 - cross[j][y]
        cross[x][j] = 1 - cross[x][j]

# μ–ΈνŒ¨ν‚Ή μ—°μ‚°μž(*)λŠ” 리슀트의 μš”μ†Œλ₯Ό 
# 각각 λ”°λ‘œλ”°λ‘œ 곡백으둜 κ΅¬λΆ„ν•΄μ„œ 좜λ ₯ν•˜λΌλŠ” μ˜λ―Έμ΄λ‹€.
for i in range(19):
    print(*cross[i])

 

 

 

♣ λ‹΅μ•ˆ

d=[]
for i in range(20) :
  d.append([])
  for j in range(20) : 
    d[i].append(0)

for i in range(19) :
  a = input().split()
  for j in range(19) :
    d[i+1][j+1] = int(a[j])

n = int(input())
for i in range(n) :
  x,y=input().split()
  x=int(x)
  y=int(y)
  for j in range(1, 20) :
    if d[j][y]==0 :
      d[j][y]=1
    else :
      d[j][y]=0

    if d[x][j]==0 :
      d[x][j]=1
    else :
      d[x][j]=0

for i in range(1, 20) :
  for j in range(1, 20) :
    print(d[i][j], end=' ')
  print()