๐ ๋ฐฑ์ค 10703 - ์ ์ฑ
โก๏ธ ๋์ ํ์ด
์ด ๋ฌธ์ ๋ ๋ด๊ฐ ๊ตฌํ๋ ฅ์ด ๋ถ์กฑํ์ฌ 3์ผ ๋์ ๋ถ์ก๊ณ ์์๋ค. ์ง๊ธ ์ ๋ต ํ์ ์ ๋ฐ๊ณ ๋ณต์ต ๊ฒธ ๊ธ์ ์์ฑํ๋ฉด์ ๋๋ผ๋ ๊ฑด ์ ๋ต ์ฝ๋๋ฅผ ๋ณผ ๋ ๊ธ๋ฐฉ ํ ์ ์์ ๊ฒ ๊ฐ์๋ฐ ๋ง์ ํ ๋๋ ์ ๊ทธ๋ ์ง ๋ชปํ ๊น?!๋ผ๋ ์๊ฐ์ด ๋ ๋ค.
์ค๊ฐ์ move
๋ฅผ ๊ณ์ฐํ๋ ๊ณผ์ ์ ๋งํ ์ง๋ฌธ์ ์ฌ๋ ธ๋๋ฐ ๊ณ ์๋ถ๊ป์ ๋ช
์พํ ๋ต๋ณ์ ํด์ฃผ์
์ ๋๋ฌด ๊ฐ์ฌํ๋ค. ๋ฌธ์ ๋ฅผ ๋ค ํ๊ณ ๊ทธ๋ถ์ ์ฝ๋๋ฅผ ๋ณด๋๊น ์ด๋ ๊ฒ๋ ์๊ฐ ํ ์ ์๊ตฌ๋..! ๋๋ฐ์ธ๋ฐ?!๋ผ๊ณ ์๊ฐํ๋ค. ๋๋ ์ธ์ ๊ฐ ๊ณ ์๊ฐ ๋์ด ๋ชจ๋ฅด๋ ๋ถ๋ค์ด ์ฌ๋ฆฌ๋ ์ง๋ฌธ์ ์์ ์์ฌ๋ก ๋ต๋ณํด์ฃผ๋ ์์ค๊น์ง ์ฌ๋ผ๊ฐ๋ฆฌ๋ผ..
์ด๋ฒ ๋ฌธ์ ๋ฅผ ํ๋ฉฐ ๋ฐฐ์ด์ ์ ์ฌ๋ฌ ๊ฐ์ง ์์ง๋ง ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๋ด์ฉ๋ค๋ง ๊ฐ์ ธ์๋ค.
- ๋ฌธ์์ด ๋ฆฌ์คํธ๋ฅผ ์
๋ ฅ๋ฐ์ ๋
[list(input())]
๋์[input()]
์ ์ฌ์ฉํ์!! ๋ฆฌ์คํธ๋ฅผ ๋ถ์ด์ง ์๋ ์ด์ ๋ ๋ฌธ์์ด ์์ฒด์์๋ ์ธ๋ฑ์ฑ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. `list`๋ฅผ ๋ถ์ด์ง ์์๋๋ ์คํ์๊ฐ์ด 2๋ฐฐ ๊ฐ๊น์ด ์ค์๋ค. - ๋ฒ์๊ฐ ํฐ 2์ฐจ์ ๋ฌธ์์ด ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํ ๋
print()
๋์sys.stdout.write()
๋ฅผ ์ฌ์ฉํ์!!print()
์sys.stdout.write()
๋input()
๊ณผsys.stdin.readline
๋งํผ ์ฐจ์ด๋ ์์ง๋ง ๋ฌธ์์ด์ ํ๋ํ๋ ์ถ๋ ฅํ๋ ๊ฒฝ์ฐ์print()
๋ ์์ฒญ ๋๋ฆด ์ ๋ฐ์ ์๋ค. - ์ต๋๊ฐ์ ๊ฐฑ์ ํ๋ ค๋ ์ด๊ธฐ๊ฐ์
0
๋ณด๋ค๋์์
๋ฅผ ์ฌ์ฉํ์. ๊ผญ ํ์ํ๊ฑด ์๋์ง๋ง ๊ฐ๋ ์ฑ๋ฉด์์ ์ฐจ์ด๊ฐ ๋๋ค. - 2์ฐจ์ ๋ฐฐ์ด์ ํ๋ํ๋์ฉ ๊ฒ์ฌํ ๋ ๊ผญ ์ข์ธก ์๋จ์์๋ถํฐ ํ๋ผ๋ ๋ฒ์ ์๋ค. ๋ฐฐ์ด ๋ด์ ์์ง์์ด ๋ง์ ๋ฌธ์ ๋ผ๋ฉด
์ข์ธก ํ๋จ
, ํน์์ฐ์ธก ํ๋จ
์ ๊ฒฝ์ฐ๋ ๊ณ ๋ คํด๋ณด์.
์ด ๋ฌธ์ ์ ํต์ฌ์ ์ ์ฑ ์ขํ ์ค ๊ฐ์ฅ ๋์ ํ ์ขํ(์ขํ๊ฐ ์ปค์ผ ๋ ๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๊น๋ค.)์ ๋ ์ขํ ์ค ๊ฐ์ฅ ๋ฎ์ ํ ์ขํ(์ขํ๊ฐ ์์์ผ ์ ์ฑ๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๊น๋ค.)๋ฅผ ์๋ก ๋นผ์ผ ๋ ๊ณผ ๋ถ๋ชํ์ง ์๊ณ ์ ์ฑ์ด ์ถ๋ฝํ ์ ์๋ค.
๊ทธ๋ฌ๋ฉด ๋ฐ๋ณต๋ฌธ๋ง๋ค ๋งค ๊ฐ์ฅ ๋ฎ์ ์ขํ๋ก ์ค์ ํ๋ฉด ๋๋ ๊ฒ ์๋๊ฐ?๋ผ๊ณ ํ ์ ์์ง๋ง ์ ์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ ์ต์๊ฐ์ผ๋ก ์ค์ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฑ์ด ์์ผ๋ฉด์ ๊ฐ์ฅ ๋ฎ์ ๊ฐ
์ ๊ณ ๋ คํด์ค์ผํ๋ค. arr
์ ๊ฐ๋ก๊ฐ ์๋ ์ธ๋ก๋ก ํ์ธํ๋ฉฐ flag
๋ฅผ ์ค์ ํ๊ณ , ์ ์ฑ์ด ์๋ ์ขํ์์๋ง True
๋ก ๋ฐ๊ฟ move
๋ฅผ ๊ณ์ฐํ ์ด์ ๊ฐ ์ด ๋๋ฌธ์ด๋ค.
์ด๋ณด๋ค ์ฌ์ด ๋ฐฉ์์ธ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋
์ฒ๋ผ S
์ ๊ธธ์ด๋งํผ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํด์ฃผ๊ณ ํ์ฌ ์ ์ฑ์ ์ขํ ์ผ ๋ ํ์ฌ row
๊ฐ๊ณผ ์ด๊ธฐ๊ฐ์ ๋น๊ตํ์ฌ ์ต๋ row
๋ฅผ ๊ฐฑ์ ์ํค๋ ๋ฐฉ๋ฒ, ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ฌ ๋
์ ์ขํ๊ฐ ์ผ ๋ ์ต์ row
์ ๊ฐฑ์ ์ํค๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด ์ฝ๊ฒ ํ์๋ค. ์ด๋ป๊ฒ ์ด๋ฐ ์๊ฐ์ ํ์ง?! ๋๋จํ๋ค..
์ดํ์๋ ์ต์ข
move
๋งํผ ๋ฐฐ์ด์ ์ด๋์์ผ์ฃผ์. ์ง๊ธ๊น์ง์ ์ค๋ช
์ด ์๋ฒฝํ๊ฒ ์ดํด๋์ง ์๋๋ค๋ฉด ํ๋จ์ ํ
์คํธ์ผ์ด์ค๋ฅผ ํด๋ณด๊ณ ์ ์๋๋์ง ์๊ฐํด๋ณด์. ๊ทธ๋ผ ๊ธ๋ฐฉ ์ ์ ์๋ค.
6 8
...X....
........
.......#
.......#
.......#
...#####
result:
........
........
.......#
.......#
...X...#
...#####
๋ฉ๋ชจ๋ฆฌ์ด๊ณผ
์ ์๊ฐ์ด๊ณผ
์ ์ฐ์์ด์๋ ๋ฌธ์ ..
# ๋์ ์ฝ๋
import sys
input = sys.stdin.readline
R, S = map(int, input().split())
meteor = [input() for _ in range(R)] # ์ ์ฑ ์ถฉ๋ ์
arr = [['.'] * S for _ in range(R)] # ์ ์ฑ ์ถฉ๋ ํ
move = 1 << 14 # ์ ์ฑ์ด ์ต์ข
์ ์ผ๋ก ์์ง์ฌ์ผํ๋ ๊ฑฐ๋ฆฌ
for x in range(S):
temp_meteor = 0 # ๊ฐ์ฅ ๋์ ์ ์ฑ ํ ์ขํ (์ขํ๊ฐ ๋์์ผ ๋
๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๊น๋ค.)
temp_ground = 9999 # ๊ฐ์ฅ ๋ฎ์ ๋
ํ ์ขํ (์ขํ๊ฐ ๋ฎ์์ผ ์ ์ฑ๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๊น๋ค.)
flag = False
for y in range(R):
if meteor[y][x] == 'X':
temp_meteor = max(temp_meteor, y)
flag = True # ์ ์ฑ์ด ์๋ ์ขํ๋ฅผ ๋ง๋๋ฉด True
elif meteor[y][x] == '#':
temp_ground = min(temp_ground, y)
if flag: # ์ ์ฑ์ด ์๋ ์ขํ์์ `move` ๊ณ์ฐ
move = min(abs(temp_meteor-temp_ground)-1, move)
for x in range(R):
for y in range(S):
if meteor[x][y] == 'X':
arr[x+move][y] = 'X' # ์ ์ฑ์ ์ต์ข
move๋งํผ ์์ง์ธ๋ค.
if meteor[x][y] == '#':
arr[x][y] = '#'
for i in range(R): # ๊ฒฐ๊ณผ ์ถ๋ ฅ
for j in range(S):
sys.stdout.write(arr[i][j])
sys.stdout.write('\n')
# ๋ค๋ฅธ์ฌ๋์ ์ฝ๋
import sys
input = sys.stdin.readline
R, S = map(int, input().split())
meteor = [input() for _ in range(R)]
arr = [['.'] * S for _ in range(R)]
max_meteor = [-3333] * S # ์ ์ฑ ์ขํ๋ฅผ ์ ์ฅ ํ ๋ฆฌ์คํธ
min_ground = [1 << 14] * S # ๋
์ขํ๋ฅผ ์ ์ฅ ํ ๋ฆฌ์คํธ
for x in range(R):
for y in range(S):
if meteor[x][y] == 'X':
max_meteor[y] = max(max_meteor[y], x) # ํ์ฌ ์ ์ฑ์ y์ขํ(์ด)๋ฅผ ๊ฐฑ์ ํจ
elif meteor[x][y] == '#':
min_ground[y] = min(min_ground[y], x) # ํ์ฌ ๋
์ y์ขํ(์ด)๋ฅผ ๊ฐฑ์ ํจ
move = min((j-i for i, j in zip(max_meteor, min_ground))) - 1 # ์ต์ข
์ ์ผ๋ก ๊ฐ์ผ ํ move ๊ณ์ฐ
for x in range(R):
for y in range(S):
if meteor[x][y] == 'X':
arr[x+move][y] = 'X' # ์ ์ฑ์ ์ต์ข
move๋งํผ ์์ง์ธ๋ค.
if meteor[x][y] == '#':
arr[x][y] = '#'
for i in range(R): # ๊ฒฐ๊ณผ ์ถ๋ ฅ
for j in range(S):
sys.stdout.write(arr[i][j])
sys.stdout.write('\n')
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 1110 - ํ์ ์นธ (0) | 2021.05.28 |
---|---|
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2578 - ๋น๊ณ (0) | 2021.05.28 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2309 - ์ผ๊ณฑ ๋์์ด (1) | 2021.05.26 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 20291 - ํ์ผ ์ ๋ฆฌ (0) | 2021.05.24 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 9093 - ๋จ์ด ๋ค์ง๊ธฐ (0) | 2021.05.24 |
๋๊ธ