https://www.acmicpc.net/problem/5212
문제 설계
1. 받은 지도에서 수정하는 것이 아니라 지도를 보고 바다만 있는 새로운 지도를 만들어서 수정
2. 이중 for문을 통해 돌면서 X가 나오는 지점을 확인하고 상하좌우로 바다인지 확인, 변수를 이용해서 주변 바다 수 체크
3. X주변이 2개 이하라면 새로운 지도에 섬을 만들어준다.
4. 섬만 있는 사각형을 잘라내서 출력하기 위해 max와 min을 이용한다.
문제 풀이
r,c=map(int,input().split())
maps=[]
for _ in range(r):
maps.append(list(input()))
new_maps=[ ['.']*c for _ in range(r)]
dx=[-1,1,0,0]
dy=[0,0,-1,1]
for i in range(r):
for j in range(c):
if maps[i][j]=='X':
cnt=0
for k in range(4):
ni,nj=i+dx[k],j+dy[k]
if ni<0 or ni>=r or nj<0 or nj>=c or maps[ni][nj]=='.':
cnt+=1
if cnt<3:
new_maps[i][j]='X'
min_row=r
max_row=0
min_col=c
max_col=0
for i in range(r):
for j in range(c):
if new_maps[i][j]=='X':
min_row=min(min_row,i)
max_row=max(max_row,i)
min_col=min(min_col,j)
max_col=max(max_col,j)
for i in range(min_row,max_row+1):
print(*new_maps[i][min_col:max_col+1],sep='')
입력
3 10
..........
..XXX.XXX.
XXX.......
출력
.XX...X
XX.....
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] #9465 스티커 (python) (0) | 2025.04.08 |
---|---|
[백준] #1932 정수 삼각형 (python) (0) | 2025.04.07 |
[백준] #1120 문자열 (python) (0) | 2025.04.07 |
[백준] #17070 파이프 옮기기 1 (python) (0) | 2025.04.06 |
[백준] #1439 뒤집기 (python) (0) | 2025.04.02 |