πŸ’» DEV/Python

[Python] sort() ν•¨μˆ˜μ™€ μ˜€λ¦„μ°¨μˆœ μ •λ ¬

vodkassi 2020. 12. 22. 20:12
728x90

Q: Sort() 없이도 리슀트λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•  수 μžˆμ„κΉŒ? 


 

κ΅­λΉ„κ΅μœ‘ 1μ£Όμ°¨ λ•Œ λ“€μ—ˆλ˜ 파이썬 κΈ°λ³Έ κ°•μ˜μ—μ„œ λ‚˜μ™”λ˜ 예제λ₯Ό λ‹€μ‹œ 가져와 λ³΄μ•˜λ‹€. 

 

  1. μ‚¬μš©μžμ—κ²Œ 둜또 λͺ‡ 개λ₯Ό ꡬ맀할 것인지 물어보고, μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 둜또 κ°―μˆ˜λ³„λ‘œ 1-45 μ‚¬μ΄μ˜ 숫자 6개λ₯Ό λ¬΄μž‘μœ„λ‘œ 뽑아라.
    • 예) 둜또 3개 -> 6개의 λ¬΄μž‘μœ„ 숫자λ₯Ό 총 3 묢음 좜λ ₯
  2. λ¬ΆμŒμ„ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•΄μ„œ 좜λ ₯ν•˜λΌ.

λ‹Ήμ‹œ κ°•μ˜ λ‚΄μš©μ— sort() ν•¨μˆ˜κ°€ ν¬ν•¨λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ—, sort() ν•¨μˆ˜λ₯Ό μ“°μ§€ μ•Šκ³  ν’€μ—ˆμ—ˆλ‹€.  (사싀 κ΅¬κΈ€λ§μœΌλ‘œ sort()을 μ°Ύμ•„ μ“°κΈ΄ ν–ˆμœΌλ‚˜ 배운 λ²”μœ„ λ‚΄μ—μ„œλ„ ν’€ 수 μžˆμ„ 것이라 μƒκ°ν•΄μ„œ μ–΄λ ΅κ²Œ λŒμ•„κ°”λ‹€)  κ·Έ λ•Œ λ‚΄κ°€ 생각할 수 μžˆμ—ˆλ˜ μ΅œμ„ μ˜ ν’€μ΄λŠ” λ‹€μŒκ³Ό κ°™μ•˜λ‹€. 

 

import random

lotto = int(input('둜또 갯수λ₯Ό μž…λ ₯ν•˜μ‹œμ˜€: '))

for num in range(lotto):

    lotto_num = random.sample(range(1, 46), 6)
    result = []
    
    for num1 in range(1, 46): 		# 1 λΆ€ν„° 45 κΉŒμ§€μ˜ μˆ«μžλ§ˆλ‹€ 
        if num1 in lotto_num:		# λ¦¬μŠ€νŠΈμ— μžˆλŠ”μ§€ ν™•μΈν•œλ‹€
            result.append(num1)		# 있으면 μƒˆ λ¦¬μŠ€νŠΈμ— μΆ”κ°€ν•œλ‹€ 
            
    print(result)   

 

μ§€κΈˆλ³΄λ‹ˆ κ½€λ‚˜ μ‘°μž‘ν•œλ°, 1-45 μ‚¬μ΄μ˜ λͺ¨λ“  수λ₯Ό 일일이 lotto_num 에 λŒ€μž…ν•΄λ³Έ λ’€,  μΌμΉ˜ν•˜λ©΄ μƒˆ λ¦¬μŠ€νŠΈμ— μΆ”κ°€ν•œλ‹€λŠ” λ°œμƒμ΄μ—ˆλ‹€. 

λ‹Ήμ‹œμ— λ°°μ› λ˜ λ‚΄μš©λ§Œμ„ μ‚¬μš©ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같은 방법도 μžˆμ—ˆμ„ 것이닀. 

 

import random
 
lotto = int(input('둜또 갯수λ₯Ό μž…λ ₯ν•˜μ‹œμ˜€: '))

for num in range(lotto):

    lotto_num = random.sample(range(1, 45), 6)
    result = []
    
    while len(lotto_num) > 0: 		# 리슀트 λ‚΄μ˜ elementκ°€ λ‹€ μ—†μ–΄μ§ˆ λ•ŒκΉŒμ§€
    
        min_num = min(lotto_num)	# 리슀트의 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•œλ‹€
        result.append(min_num) 		# μ΅œμ†Ÿκ°’μ„ μƒˆ λ¦¬μŠ€νŠΈμ— μΆ”κ°€ν•œλ‹€
        lotto_num.remove(min_num)	# κΈ°μ‘΄ λ¦¬μŠ€νŠΈμ—μ„œ ν•΄λ‹Ή μ΅œμ†Ÿκ°’μ„ μ‚­μ œν•œλ‹€ 
        
    print(result) # μƒˆ 리슀트 좜λ ₯ 

 

μ‘°μž‘ν•˜κΈ°λŠ” λ§ˆμ°¬κ°€μ§€. ν•˜μ§€λ§Œ 문제λ₯Ό ν‘ΈλŠ” 것 μžμ²΄κ°€ λͺ©μ μ΄λΌλ©΄ κ²°κ³ΌλŠ” 성곡이긴 ν•˜λ‹€. 

 

애써 ν’€κ³  λ‚œ 후에 λ‹΅μ§€λ₯Ό ν™•μΈν–ˆλ”λ‹ˆ ν•΄μ„€μžκ°€ 'μš°λ¦¬κ°€ λ°°μš°μ§€ μ•Šμ€ sort() μ΄λΌλŠ” ν•¨μˆ˜λ₯Ό μ“°λ©΄ μ‰½κ²Œ ν’€ 수 μžˆλ‹΅λ‹ˆλ‹€~' κ³  ν•΄μ„œ 어이 μ—†μ—ˆμ§€λ§Œ, μ–΄μ¨Œλ“  λ‚˜λŠ” sort() 을 μ“°λŠ” 방법과 μ“°μ§€ μ•ŠλŠ” 방법 두 κ°€μ§€λ₯Ό λͺ¨λ‘ ν„°λ“ν–ˆμœΌλ‹ˆ 잘 된 일이라고 μƒκ°ν–ˆλ‹€. 

 

sort() 을 μ“°λ©΄ μ½”λ“œκ°€ ν•œκ²° κ°„κ²°ν•΄μ§„λ‹€:

 

import random
 
lotto = int(input('둜또 갯수λ₯Ό μž…λ ₯ν•˜μ‹œμ˜€: '))

for num in range(lotto):
    lotto_num = random.choice(range(1,46), 6)
    print(lotto_num.sort())

 


A: Sort() 없이도 리슀트λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•  수 μžˆλ‹€. 그런데 ꡳ이 길을 λŒμ•„κ°ˆ ν•„μš”λŠ” μ—†λŠ” 것 κ°™λ‹€.