[Programmers] μ†Œμˆ˜ μ°ΎκΈ°

Updated:

μ†Œμˆ˜ μ°ΎκΈ°

μ†Œμˆ˜Β μ°ΎκΈ° λ₯Ό ν΄λ¦­ν•˜λ©΄ λ°”λ‘œ μ΄λ™ν•œλ‹€.

이 λ¬Έμ œλŠ” 주어진 숫자 μΉ΄λ“œλ₯Ό 톡해 λ§Œλ“€ 수 μžˆλŠ” λͺ¨λ“  숫자의 경우λ₯Ό κ΅¬ν•˜λŠ”κ²Œ μ£Όμš” λ¬Έμ œμ˜€λ‹€.

λ§Œμ•½ β€˜017’ 이 주어진닀면 λ§Œλ“€ 수 μžˆλŠ” μˆ˜λŠ” 1, 7, 10, 17, 70, 71, 107, 170, 701, 710 이 μžˆλ‹€.

permutation κ³Ό 쑰건을 톡해 λ§Œλ“€ 수 μžˆλŠ” 수 λ₯Ό κ΅¬ν–ˆλ‹€.

β€˜017’ 이 μž…λ ₯λœλ‹€λ©΄ μ΅œλŒ€λ‘œ λ§Œλ“€ 수 μžˆλŠ” 숫자의 ν¬κΈ°λŠ” μ„Έ 자리 수 이닀.

λ”°λΌμ„œ 1 자리 수, 2 자리 수, 3 자리 수 의 μˆœμ—΄μ„ λ§Œλ“€μ–΄ λ§Œλ“€μ–΄ 진 μˆ˜κ°€ μžλ¦¬μˆ˜μ™€ κ°™μœΌλ©΄ λ¦¬μŠ€νŠΈμ— 넣어쀬닀.

예λ₯Όλ“€μ–΄ 3 자리 수 의 μˆœμ—΄μ„ λ§Œλ“€λ©΄ (β€˜0’, β€˜1’, β€˜7’) 이 λ§Œλ“€μ–΄ 질 수 도 μžˆλ‹€.

μ΄λ•Œ join 을 톡해 숫자 17 둜 λ°”κΎΌλ‹€λ©΄ 2 자리 수의 숫자이기 λ•Œλ¬Έμ— λ¦¬μŠ€νŠΈμ— 듀어가지 μ•ŠλŠ”λ‹€.

또 λ§Œμ•½ β€˜0170’ 이 μž…λ ₯λœλ‹€λ©΄ (β€˜1’, β€˜0’, β€˜0’) 이 두 번 λ§Œλ“€μ–΄μ§„λ‹€.

μ΄λ ‡κ²Œ 쀑볡 λ˜λŠ” 수λ₯Ό κ±°λ₯΄κΈ° μœ„ν•΄ λ§ˆμ§€λ§‰μ— set 으둜 λ°”κΎΌλ’€ append ν•΄μ£Όμ—ˆλ‹€.


def solution(numbers):
	answer = 0
	_num = list(numbers)
	make_num = list()

	for idx in range(1, len(_num) + 1):
		tmp = [int(''.join(val)) for val in permutations(_num, idx) if len_num(int(''.join(val))) == idx]
		make_num.append((set(tmp))

	for cur in make_num:
		for val in cur:
			if is_prime(val):
				answer += 1
			else:
				pass

	return answer

숫자의 자리 수λ₯Ό κ΅¬ν•˜λŠ” ν•¨μˆ˜μ™€ μ†Œμˆ˜ νŒλ³„ ν•¨μˆ˜λŠ” 일반적인 μ•Œκ³ λ¦¬μ¦˜μ„ 톡해 κ΅¬ν˜„ν–ˆλ‹€.

set 을 μ΄μš©ν•΄ μ—λΌν† μŠ€ν…Œλ„€μŠ€λ₯Ό κ΅¬ν˜„ ν•˜λŠ” 방법도 μžˆλ‹€κ³  ν•˜λŠ”λ°..

λ‚˜μ€‘μ— 곡뢀 ν•΄ 봐야겠닀.


Categories:

Updated:

Leave a comment