Programmers : N์œผ๋กœ ํ‘œํ˜„

1 ๋ถ„ ์†Œ์š”

๐Ÿ”’ 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๋ฒˆ์งธ ์–ป์€ ๊ฒฐ๊ณผ๊ฐ’๋“ค์„ ์ €์žฅํ•œ๋‹ค.

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ