알고리즘
[백준, 파이썬, 3023번] 마술사 이민혁
hminor
2024. 2. 15. 10:11
반응형
풀이
- 해당 문제에서 중요했던 점으로 생각하는 건
- 깊은 복사를 인지하는지 물어보는 문제 같았다.
- 카드 접어서 추가하는 건 check로 받아온 값을 mtx에 넣어주며
- 코드와 같이 슬라이싱을 활용해서 li를 만들어주고
- 얕은 복사를 하지 않기 위해 반복문으로 하나씩 값을 넣어주고
- 이후 에러 위치에는 기존 값에 따라 서로 다른 값으로 넣어주면서 해결
import sys
input = sys.stdin.readline
r,c = map(int,input().split())
mtx = [[""]*(2*c) for _ in range(r*2)]
check = [list(input().rstrip('\n')) for _ in range(r)]
err = list(map(int,input().split()))
cnt = r-1
for i in range(2*r):
if r > i:
li = check[i] + check[i][::-1]
for j in range(2*c): mtx[i][j] = li[j]
else:
li = mtx[cnt]
for j in range(2*c): mtx[i][j] = li[j]
cnt -= 1
mtx[err[0]-1][err[1]-1] = "#" if mtx[err[0]-1][err[1]-1] == "." else "."
for i in range(2*r): print("".join(mtx[i]))