Programmers : N์ผ๋ก ํํ
๐ Programmers : N์ผ๋ก ํํ
์ด ์ ์ ๊ฒฐ๊ณผ๊ฐ๋ค์ ์ด์ฉํ์ฌ ์๋ก์ด ๊ฒฐ๊ณผ๋ฅผ ๋์ถํด๋ด๋ ๋์ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ์ด์ฉํ๋ฉด ๋๋ค.
N์ m๋ฒ ์ฌ์ฉํ์ ๋ ๋์ฌ ์ ์๋ ๊ฒฐ๊ณผ๊ฐ์ ์ด์ ๊ฒฐ๊ณผ๊ฐ๋ค์ ์ฌ์น์ฐ์ฐํ์ฌ ๋์ถํด๋ผ ์ ์๋ค.
N์ 1๋ฒ ์ผ์ ๋ = N
N์ 2๋ฒ ์ป์ ๋ = (1๋ฒ ์ผ์ ๋ + 1๋ฒ ์ผ์ ๋) + NN
N์ 3๋ฒ ์ผ์ ๋ = (1 + 2) + NNN
N์ 4๋ฒ ์ผ์ ๋ = (1 + 3) + (2 + 2) + NNNN
โฆ
N์ 8๋ฒ ์ผ์ ๋ผ = (1 + 7) + (2 + 6) + (3 + 5) + (4 + 4) + NNNNNNNN
๊ทธ์ธ -1
์ด๋ฅผ ํ ๋๋ก ์ฝ๋๋ฅผ ์ง๋ฉด ์๋์ ๊ฐ๋ค.
๐ ์ฝ๋
def solution(N, number):
result = [{}]
for i in range(1,9):
r = {int(str(N)*i)}
for j in range(1,i//2+1):
for x in result[j]:
for y in result[i-j]:
r.add(x+y)
r.add(max(x,y)-min(x,y))
r.add(x*y)
if x != 0 and y != 0:
r.add(x//y)
r.add(y//x)
if number in r:
return i
result.append(r)
return -1
ํต์ฌ : N์ i๋ฒ ์ฌ์ฉํ์ ๋์ ๊ฒฐ๊ณผ๊ฐ๋ค์ N์ i๋ฒ ์ด์ด๋ถ์ธ ์์ ํจ๊ป result ๋ฆฌ์คํธ์ i๋ฒ์งธ์ ์ ์ฅํ๋ค.
0๋ฒ ์ฌ์ฉํ์ ๋๋ ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฏ๋ก ๋น set์ ๋ฃ์๋ค.
8๋ฒ ์ดํ ์ฌ์ฉ์ -1์ ๋ฆฌํดํด์ผํ๋ฏ๋ก 8๊น์ง๋ง ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
i๋ฒ์งธ์ ๊ฒฐ๊ณผ๊ฐ๋ค์ ์ด์ ๊ฒฐ๊ณผ ์งํฉ๋ค์ ์ด์ฉํ์ฌ ์ฌ์น์ฐ์ฐ์ ํตํด ์ป๋๋ค.
์ป์ด์ง ๊ฒฐ๊ณผ๊ฐ๋ค ์ค์ number๊ฐ ์๋ค๋ฉด i๋ฒ ์ฌ์ฉํ ๊ฒ์ด ์ ์ผ ์ ์ ์์ด๋ฏ๋ก i๋ฅผ ๋ฐํํ๋ค.
๊ทธ๊ฒ์ด ์๋๋ผ๋ฉด result์ i๋ฒ์งธ ์ป์ ๊ฒฐ๊ณผ๊ฐ๋ค์ ์ ์ฅํ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ