๐ก ์กฐ๊ฑด ๋ฐ ํ์ด
- ์นธํ ์ด ์งํฉ์ 0๊ณผ 1 ์ฌ์ด์ ์ค์๋ก ์ด๋ฃจ์ด์ง ์งํฉ.
๊ตฌ๊ฐ [0, 1]
์์ ์์ํด์ ๊ฐ ๊ตฌ๊ฐ์ 3๋ฑ๋ถํ์ฌ ๊ฐ์ด๋ฐ ๊ตฌ๊ฐ์ ๋ฐ๋ณต์ ์ผ๋ก ์ ์ธํ๋ ๋ฐฉ์์ผ๋ก ๋ง๋ ๋ค.
-
๊ฐ 3N
๊ฐ ์๋ ๋ฌธ์ด์์ ์์ == - ์ ๊ฐ์๋ 3 ** N
๊ฐ
- ๋ถํ ์ ๋ณต + ์ฌ๊ท ์ ํ์ ๋ฌธ์
0 <= N <= 12
- ํ์ผ์ ๋์์ ์
๋ ฅ์ ๋ฉ์ถ๋ค
๐ฅ ์์ค ์ฝ๋
from sys import stdin, setrecursionlimit
setrecursionlimit(10 ** 6)
def div(s, idx):
ls = len(s)
if ls == 3 and idx != 1:
return '- -'
elif ls >= 3 and idx == 1:
return s.replace('-', ' ')
arr = []
for i in range(0, ls, ls // 3):
arr.append(string[i:i+ls//3])
k = div(arr[0], 0) + div(arr[1], 1) + div(arr[2], 2)
return k
while 1:
k = '-'
n = stdin.readline().rstrip()
if n == '':
break
num = (3 ** int(n))
if num == 1:
print('-')
continue
string = k * num
arr = div(string, 0)
print(arr)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
0
1
3
2
์คํ๊ฒฐ๊ณผ
-
- -
- - - - - - - -
- - - -
โจ๏ธ ๋ฌธ์ ํ์ด
- ์นธํ ์ด ์งํฉ์ ๊ฐ ๊ตฌ๊ฐ์ 3๋ฑ๋ถ, ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ด๋ฐ ๊ตฌ๊ฐ์ ์ ์ธํ๋ ๋ฐฉ์
- ํ์ผ์ ๋์์ ์
๋ ฅ์ ๋ฉ์ถ๋ค ๋ผ๋ ๋ง์ ๋ฌดํ๋ฃจํ๋ฅผ ๋๋ค๊ฐ,
์
๋ ฅ๋ฐ์ N
์ด ๋น์ด์๋ ๋ฌธ์์ด ''
์ด๋ฉด break
- ์
๋ ฅ๋ฐ์
N
์ด 0, -
์ ๊ฐ์๊ฐ 1์ด๋ผ๋ฉด print('-')
(N ** 3) * '-' == ํ์ดํ์ ๊ฐ์
- ๋ง๋ค์ด์ง ํ์ดํ์ ๋ถํ ์ ๋ณต ํจ์์ ๋ฃ๋๋ค.
๊ฐ ํ๋ผ๋ฏธํฐ๋ 3 ** N
๊ฐ์ ํ์ดํ๊ณผ ์ธ๋ฑ์ค ๋ฒํธ์ด๋ค.
- ์ธ๋ฑ์ค ๋ฒํธ๋ ์ธ๋ฑ๋ถ์ด ๋ ๋ฌธ์์ด์ ๊ฐ ์ธ๋ฑ์ค ๋ฒํธ์ด๋ฉฐ, ์ฌ๊ท๋ฅผ ํตํด ์ธ๋ฑ์ค ๋ฒํธ๊ฐ 1์ธ
๋ฌธ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
- ๋ฌธ์์ด์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ 3์ผ๋ก ๋๋์ด
๊ทธ ๊ธธ์ด๋งํผ ๋ฆฌ์คํธ๋ฅผ ์ฌ๋ผ์ด์ฑํด arr ๋ฆฌ์คํธ์ ๋ฃ๋๋ค.
- ๋ฐํ ์กฐ๊ฑด์ ์๋์ ๋๊ฐ์ง๋ก ๋ง๋ค์๋ค.
- ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 3์ด๊ณ ์ธ๋ฑ์ค ๋ฒํธ๊ฐ 1์ด ์๋ ๋์๋ '- -'์ ๋ฆฌํด
- ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 3๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฌ๋ฉฐ, ์ธ๋ฑ์ค ๋ฒํธ๊ฐ 1์ผ ๋๋ ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ ๊ณต๋ฐฑ์ ๋ฐํ
๐พ ๋๋์
- ๋ถํ ์ ๋ณต์ ์ฌ์ฉํ๊ธฐ๋ก ํ๊ณ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ด ํ๋ผ๋ฏธํฐ ๊ฐ์ผ๋ก ๋ฃ์๊ณ ์๊ฐํ๋ค.
์ข์ ์์ด๋์ด๊ฐ ํ๋ฒ์ ๋ ์ฌ๋ผ์ ๋งค์ฐ ์ข์๋ค.
- ์ฑ๊ณต์ ์ธ ํ์ด์๋ค. ์ฌ๊ท ์ฌ์ฉ ์ค๋ ฅ์ด ์ต์
์ด๋ผ ์ฌ์ฉ์์ฒด๊ฐ ๋ง์ด ํ๋ค์์ง๋ง
์์ ๋ณด๋ค๋ ์ฌ์ฉํ๊ธฐ ๋งค์ฐ ์์ํด์ก๋ค.