#4673 μ…€ν”„ λ„˜λ²„πŸŽ¨

sso0_zΒ·2023λ…„ 1μ›” 19일
0

λ°±μ€€

λͺ©λ‘ 보기
11/40

λ¬Έμ œπŸ“

결과😍

μ½”λ“œπŸ’»

num = set(range(1,10001))
num2 = set()

for i in num:
  for j in str(i):
    i += int(j)
  num2.add(i)

result = num-num2
for h in sorted(result):
  print(h)

ν’€μ΄πŸ’‘

  1. num 배열에 set을 μ΄μš©ν•˜μ—¬ 1~10000κΉŒμ§€ μ±„μš°κΈ°
  2. μƒμ„±μžκ°€ μžˆλŠ” 숫자λ₯Ό λ„£μ–΄μ£ΌκΈ° μœ„ν•œ λ°°μ—΄ num2 생성
  3. λ°˜λ³΅λ¬Έμ„ 톡해 μƒμ„±μžκ°€ μžˆλŠ” 숫자λ₯Ό num2에 add
    ex) i = 12 -> j = '1','2' / then, i = 12+1+2 = 15
    λ”°λΌμ„œ num2에 15λ₯Ό add!
  4. λͺ¨λ“  값이 λ“€μ–΄μžˆλŠ” λ°°μ—΄ numμ—μ„œ μƒμ„±μžκ°€ μžˆλŠ” μˆ«μžκ°€ λ“€μ–΄μžˆλŠ” λ°°μ—΄ num2λ₯Ό λΉΌμ£Όμ–΄ result λ°°μ—΄ 생성
  • set은 '-'μ—°μ‚° κ°€λŠ₯!(μ°¨μ§‘ν•©)
  1. 반볡문 μ‚¬μš©ν•˜μ—¬ result 배열에 λ“€μ–΄μžˆλŠ” κ°’ ν•˜λ‚˜μ”© 좜λ ₯~!
  • sorted둜 μˆœμ„œ μ •λ ¬ν•΄μ£ΌκΈ°

λ‹€λ₯Έ μ‚¬λžŒμ˜ ν’€μ΄πŸ€”

numbers = list(range(1, 10_001))
remove_list = []  # 이후에 μ‚­μ œν•  숫자 list
for num in numbers :
    for n in str(num):
        num += int(n)  # μƒμ„±μžκ°€ μžˆλŠ” 숫자
    if num <= 10_000:  # 10,000보닀 μž‘κ±°λ‚˜ 같을 λ•Œλ§Œ,
        remove_list.append(num)  # append: λ¦¬μŠ€νŠΈμ— μš”μ†Œλ₯Ό μΆ”κ°€ν•  λ•Œ

for remove_num in set(remove_list) :  # set 으둜 쀑볡값 제거
    numbers.remove(remove_num)
for self_num in numbers :  # μƒμ„±μžκ°€ μžˆλŠ” 숫자λ₯Ό μ‚­μ œν•œ 리슀트
    print(self_num)

set이 μ•„λ‹Œ listλ₯Ό μ΄μš©ν•œ 풀이방법도 μžˆμ—ˆλ‹€.


set은 집합에 κ΄€λ ¨λœ 것을 μ‰½κ²Œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ λ§Œλ“  μžλ£Œν˜•μ΄λ‹€.

  • 쀑볡 ν—ˆμš© X
  • μˆœμ„œ X
    set μžλ£Œν˜•μ— μ €μž₯된 값을 μΈλ±μ‹±μœΌλ‘œ μ ‘κ·Όν•˜λ €λ©΄ λ¦¬μŠ€νŠΈλ‚˜ νŠœν”Œλ‘œ λ³€ν™˜ν•œ ν›„ ν•΄μ•Ό ν•œλ‹€.
  1. ꡐ집합
    s1 & s2

  2. ν•©μ§‘ν•©
    s1 | s2
    s1.union(s2)

  3. μ°¨μ§‘ν•©
    s1 - s2
    s2 - s1


  1. κ°’ 1개 μΆ”κ°€ν•˜κΈ°(add)
    s1.add(4)

  2. κ°’ μ—¬λŸ¬ 개 μΆ”κ°€ν•˜κΈ°(update)
    s1.update([4, 5, 6])

  3. νŠΉμ • κ°’ μ œκ±°ν•˜κΈ°(remove)
    s1.remove(2)

profile
μ±„μ†Œ

0개의 λŒ“κΈ€