[Programmers] N으둜 ν‘œν˜„

Updated:

N으둜 ν‘œν˜„

N으둜 ν‘œν˜„ 을 ν΄λ¦­ν•˜λ©΄ λ°”λ‘œ μ΄λ™ν•œλ‹€.

μ²˜μŒμ—” 간단해 λ³΄μ˜€λŠ”λ° 정말 μ–΄λ €μ› λ˜ λ¬Έμ œμ˜€λ‹€.

문제 ν•΄κ²°μ˜ μ•„μ΄λ””μ–΄λŠ” N 을 n 개λ₯Ό μ‚¬μš©ν•΄ λ§Œλ“€ 수 μžˆλŠ” 수λ₯Ό n 이 1일 λ•Œ λΆ€ν„° μ €μž₯ν•΄ λ‚˜κ°€λŠ” 것이닀.

N 이 5 μΌλ•Œ 예λ₯Ό λ“€μ–΄λ³΄μžλ©΄ 5 λ₯Ό 1 개 가지고 5[1] = 5 λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

5 λ₯Ό 2 개 κ°€μ§€κ³ μ„œλŠ” 5[2] = (5 + 5), (5 - 5), (5 * 5), (5 // 5) , 55 λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

즉 5[2] = 5[1] 사칙연산 5[1] 이닀.

5[3] = 5[1] 사칙연산 5[2], 5[2] 사칙연산 5[1] 이닀.

5[4] = 5[1] 사칙연산 5[3], 5[2] 사칙연산 5[2], 5[3] 사칙연산 5[1] 이닀.

μ—¬κΈ°μ„œ 5[1] 사칙연산 5[3], 5[3] 사칙연산 5[1] 을 ν•΄μ£ΌλŠ” μ΄μœ λŠ” λ§μ…ˆ, κ³±μ…ˆμ€ μˆœμ„œκ°€ λ°”λ€Œμ–΄λ„ κ²°κ³Όκ°€ κ°™μ§€λ§Œ

λ‚˜λˆ—μ…ˆ, λΊ„μ…ˆμ€ μˆœμ„œκ°€ λ°”λ€Œλ©΄ 닡도 λ°”λ€ŒκΈ° λ•Œλ¬Έμ΄λ‹€.

μ΄λ ‡κ²Œ 계산을 ν•˜λ‹€κ°€ λ‚΄κ°€ 찾고자 ν•˜λŠ” μˆ«μžκ°€ 있으면 λͺ‡ 개의 N 을 μ‚¬μš©ν–ˆλŠ”μ§€ 좜λ ₯ν•˜λ©΄ λœλ‹€.

μ°Έμ‘° - ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 문제 풀이 N으둜 ν‘œν˜„


def solution(N, number):
	if N == number:
		return 1

	dp = [set() for _ in range(9)]
	for i in range(1, 9):
		dp[i].add(int(str(N) * i))

	for i in range(2, 9):
		for j in range(1, i):
			for a in dp[j]:
				for b in dp[i - j]:
					dp[i].add(a + b)
					dp[i].add(a * b)
					dp[i].add(a - b)
					if b:
						dp[i].add(a // b)
		if number in dp[i]:
			return i

	return -1



Categories:

Updated:

Leave a comment