https://www.acmicpc.net/problem/13732
흔히 볼 수 있는 '중력' 문제이다.
그런데 그냥 아무생각없이 O(N^2)과 같은 시간복잡도로 구현하기 쉬운 유형이다.
큐를 이용한다면 한 줄당 O(N)의 시간복잡도로 해결이 가능하다.
from sys import stdin
from collections import deque
input=stdin.readline
n,m=map(int,input().split())
arr=[input().rstrip() for i in range(n)]
line=deque([])
ans=[['' for i in range(m)] for i in range(n)]
for i in range(m):
for j in range(n):
if arr[~j][i]=='#':
ans[~j][i]='#'
for k in range(len(line)):
ans[~j+k+1][i]=line[~k]
line=deque([])
else:
if arr[~j][i]=='.':
line.append('.')
else:
line.appendleft('a')
for k in range(len(line)):
ans[~j+k][i]=line[~k]
line=deque([])
for i in ans:
print(*i,sep='')
'Koala - 9기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python] 1806번 부분합 (0) | 2023.01.22 |
---|---|
[백준/Java] 11722번 가장 긴 감소하는 부분 수열 (0) | 2023.01.22 |
[백준/c++] 16236번 아기상어 (0) | 2023.01.20 |
[백준/Python] 2470번 두 용액 (0) | 2023.01.19 |
[백준/C++] 1544번 소수의 연속합 (0) | 2023.01.18 |