๐ค๋ฌธ์ ํด๊ฒฐ
1. ๋ถํ ์ ๋ณต | S1
2. ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ๋ค
3. ์ผ์ชฝ ์, ์ค๋ฅธ์ชฝ ์, ์ผ์ชฝ ์๋, ์ค๋ฅธ์ชฝ ์๋ ๋ฅผ ์ฐจ๋ก๋ก ์ชผ๊ฐ์ ๋ชจ๋ 1์ด๋ 0์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋์ง ํ์ธํ๊ณ
4. ์๋ ๊ฒฝ์ฐ ๋ค์ ์ชผ๊ฐ์ ํ์ธํ๋ค.
๐จ ๋งจ ์ฒ์ ๋ฐฐ์ด์ด ๋ชจ๋ 1์ธ์ง 0์ธ์ง ํ์ธ์ ์ํด์ ์ ์ ๊ณ ๋ฏผ์ ํ๋ ๋ฌธ์ !!! ๋ต์ด 0์ด๋ 1์ด ๋ ์ ์๋ค
๋ฌธ์ ๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ฌ์ฐ๋ ์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ต์ ์ถ๋ ฅํ๋๊ฒ ํ๋ค ์ ์๋ค. ๋งจ ์ฒ์ ํจ์์ ๋ค์ด์๋ค๋ ๊ฒ์ ํ๋์ ๋ฌถ์์ ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ดํธ๋ฅผ ์ฌ์ฉํด์ ์ ์ ํ ๋ฌถ์ด์ค๋ค.( ์์ํ ๋ ๋๋ ๋)
๐ป์์ค ์ฝ๋
from itertools import chain
# 2์ค ๋ฆฌ์คํธ๋ฅผ ๋จ์ผ ๋ฆฌ์คํธ๋ก ๋ฐ๊พธ๊ธฐ ์ํด์ chain ํจ์ ์ฌ์ฉํ์
def compression(lst):
global answer
length = len(lst) // 2
answer += '('
# ์ผ์ชฝ ์
llst = lst[:length]
for i in range(length):
llst[i] = llst[i][:length]
sum_llst = sum(list(map(int, chain.from_iterable(llst))))
if sum_llst == length ** 2:
answer += '1'
elif sum_llst == 0:
answer += '0'
else:
compression(llst)
# ์ค๋ฅธ์ชฝ ์
llst = lst[:length]
for i in range(length):
llst[i] = llst[i][length:]
sum_llst = sum(list(map(int, chain.from_iterable(llst))))
if sum_llst == length ** 2:
answer += '1'
elif sum_llst == 0:
answer += '0'
else:
compression(llst)
# ์ผ์ชฝ ์๋
llst = lst[length:]
for i in range(length):
llst[i] = llst[i][:length]
sum_llst = sum(list(map(int, chain.from_iterable(llst))))
if sum_llst == length ** 2:
answer += '1'
elif sum_llst == 0:
answer += '0'
else:
compression(llst)
# ์ค๋ฅธ์ชฝ ์๋
llst = lst[length:]
for i in range(length):
llst[i] = llst[i][length:]
sum_llst = sum(list(map(int, chain.from_iterable(llst))))
if sum_llst == length ** 2:
answer += '1'
elif sum_llst == 0:
answer += '0'
else:
compression(llst)
answer += ')'
# ์์ ----------------------------------------------------
N = int(input())
image = [list(input()) for _ in range(N)]
answer = ''
# ์ต์ด ํ์ธ
sum_image = sum(list(map(int, chain.from_iterable(image))))
if sum_image == len(image) ** 2:
answer += '1'
elif sum_image == 0:
answer += '0'
else:
compression(image)
print(answer)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/1992
๋ฌธ์
ํ๋ฐฑ ์์์ ์์ถํ์ฌ ํํํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ฟผ๋ ํธ๋ฆฌ(Quad Tree)๋ผ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ํฐ ์ ์ ๋ํ๋ด๋ 0๊ณผ ๊ฒ์ ์ ์ ๋ํ๋ด๋ 1๋ก๋ง ์ด๋ฃจ์ด์ง ์์(2์ฐจ์ ๋ฐฐ์ด)์์ ๊ฐ์ ์ซ์์ ์ ๋ค์ด ํ ๊ณณ์ ๋ง์ด ๋ชฐ๋ ค์์ผ๋ฉด, ์ฟผ๋ ํธ๋ฆฌ์์๋ ์ด๋ฅผ ์์ถํ์ฌ ๊ฐ๋จํ ํํํ ์ ์๋ค.
์ฃผ์ด์ง ์์์ด ๋ชจ๋ 0์ผ๋ก๋ง ๋์ด ์์ผ๋ฉด ์์ถ ๊ฒฐ๊ณผ๋ "0"์ด ๋๊ณ , ๋ชจ๋ 1๋ก๋ง ๋์ด ์์ผ๋ฉด ์์ถ ๊ฒฐ๊ณผ๋ "1"์ด ๋๋ค. ๋ง์ฝ 0๊ณผ 1์ด ์์ฌ ์์ผ๋ฉด ์ ์ฒด๋ฅผ ํ ๋ฒ์ ๋ํ๋ด์ง๋ฅผ ๋ชปํ๊ณ , ์ผ์ชฝ ์, ์ค๋ฅธ์ชฝ ์, ์ผ์ชฝ ์๋, ์ค๋ฅธ์ชฝ ์๋, ์ด๋ ๊ฒ 4๊ฐ์ ์์์ผ๋ก ๋๋์ด ์์ถํ๊ฒ ๋๋ฉฐ, ์ด 4๊ฐ์ ์์ญ์ ์์ถํ ๊ฒฐ๊ณผ๋ฅผ ์ฐจ๋ก๋๋ก ๊ดํธ ์์ ๋ฌถ์ด์ ํํํ๋ค
์ ๊ทธ๋ฆผ์์ ์ผ์ชฝ์ ์์์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์ด๊ณผ ๊ฐ์ด ์ซ์๋ก ์ฃผ์ด์ง๋ฉฐ, ์ด ์์์ ์ฟผ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ์์ถํ๋ฉด "(0(0011)(0(0111)01)1)"๋ก ํํ๋๋ค. N ×N ํฌ๊ธฐ์ ์์์ด ์ฃผ์ด์ง ๋, ์ด ์์์ ์์ถํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์์์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์ซ์ N ์ด ์ฃผ์ด์ง๋ค. N ์ ์ธ์ ๋ 2์ ์ ๊ณฑ์๋ก ์ฃผ์ด์ง๋ฉฐ, 1≤N ≤64์ ๋ฒ์๋ฅผ ๊ฐ์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ๋ ๊ธธ์ด N ์ ๋ฌธ์์ด์ด N ๊ฐ ๋ค์ด์จ๋ค. ๊ฐ ๋ฌธ์์ด์ 0 ๋๋ 1์ ์ซ์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์์์ ๊ฐ ์ ๋ค์ ๋ํ๋ธ๋ค.
์ถ๋ ฅ
์์์ ์์ถํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์๋ฌผ์ ์ ์ด์ (2020 KAKAO BLIND RECRUITMENT) (2) | 2020.08.29 |
---|---|
[python] ๋ฐฑ์ค - 1309. ๋๋ฌผ์ (0) | 2020.08.28 |
[python] ๋ฐฑ์ค - 7569. ํ ๋งํ (0) | 2020.08.26 |
[python] ๋ฐฑ์ค - 2251. ๋ฌผํต (0) | 2020.08.25 |
[python] ๋ฐฑ์ค - 1495. ๊ธฐํ๋ฆฌ์คํธ (0) | 2020.08.24 |