CodingTest

[Python]λ°±μ€€ 2309번::μΌκ³±λ‚œμŸμ΄

λ„μΊλ¦¬πŸ± 2021. 4. 29. 15:06
λ°˜μ‘ν˜•

Key Point

πŸ‘‰ intertools λͺ¨λ“ˆ μ‚¬μš©ν•˜κΈ°

 

정리

πŸ‘‰ combinations κ³Ό permutations μ™€ μ°¨μ΄μ μ€?

 

- permutations 은 쀑볡이 λ˜μ–΄λ„ μˆœμ„œκ°€ λ‹€λ₯Έ μΌ€μ΄μŠ€μ΄λ©΄ λͺ¨λ‘ 포함
   >>  (1,2,3) (1,3,2) 쑴재, λ‹€λ₯Έ μ˜λ―Έμž„.

- combinations 은 쀑볡 μ—†μŒ

  >> (1,2,3)μ™Έμ˜ 같은 μš”μ†Œ ν¬ν•¨λœ 것 μ—†μŒ

 

 

처음 풀이 (μ •λ‹΅ O)

from itertools import permutations

list_height = []

for i in range(9):
    list_height.append(int(input()))

list_height.sort()

# sum(list) = > 1차원 리슀트의 ν•©μž„.
for i in permutations(list_height, 7):  
    if(sum(i) == 100):
        print(i[0])
        print(i[1])
        print(i[2])
        print(i[3])
        print(i[4])
        print(i[5])
        print(i[6])
        break

 

 

더 λ‚˜μ€ 풀이

from itertools import combinations

h = [int(input()) for _ in range(9)]
for i in combinations(h,7):
    if (sum(i) == 100):
        for j in sorted(i):
            print(j)

 

 

 

κ·Έ μ™Έμ˜ 풀이

이쀑 for λ¬Έ / 9λͺ…쀑 7λͺ…을 λ½‘λŠ” κ±΄, 9λͺ… μ€‘ 2λͺ…을 λ½‘λŠ”λ‹€λŠ” κ²ƒκ³Ό κ°™μ€ μ˜λ―Έμ΄λ‹€. κ·Έλ ‡λ‹€λ©΄, μ΄μ€‘ for문을 ν†΅ν•΄ 2λͺ…을 λ½‘κ³  κ·Έ μ™Έμ˜ λ‚œμŸμ΄ ν‚€ ν•©μ„ κ΅¬ν•˜λ©΄ λœλ‹€. 

N이 9이기 λ•Œλ¬Έμ—, ν• λ§Œ ν•˜λ‹€.

 

 

κ·Έ μ™Έμ˜ λ‚΄ 질문 및 λ©˜ν†  λ‹΅λ³€ 사항

 

질문. 파이썬 λ‚΄λΆ€μ μœΌλ‘œ 리슀트 λ‚΄μ—μ„œ in 같은 κ±°λ‚˜, sort 같은 λ©”μ„œλ“œ μ‚¬μš©μ„ ν•˜λŠ”κ±΄
μ‹œκ°„λ³΅μž‘λ„μ— κ³ λ €λ₯Ό ν•˜μ§€ μ•Šμ•„도 λ˜λŠ” μ΄μœ κ°€ λ­”κ°€μš”?
이미 μ„±λŠ₯적으둜 μ•„μ£Ό λΉ¨λΌμ„œ κ·ΈλŸ°κ°€μš”?
λ‹΅λ³€. κ³ λ €λ₯Ό μ•ˆν•΄λ„ λ˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€. κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€. 파이썬 리슀트 μŠ¬λΌμ΄μ‹±μ€ κ·Έλƒ₯ forλ¬Έ μ“΄ 것과 λ˜‘κ°™μ€ 방식이라 O(N) 으둜 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. 언어듀이 기본으둜 μ œκ³΅ν•˜λŠ” 정렬은 λ‹€ O(NlogN) μž…λ‹ˆλ‹€.

질문. ν˜Ήμ‹œ λ°±μ€€ ν’€λ•Œ, λ‹€λ₯Έ ideμ—μ„œ μΆ©λΆ„νžˆ ν’€μ–΄ λ³Έν›„ μ™„μ„±λœ κ±° 같은 λ‹΅μ•ˆμ„ μ œμΆœν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ, λ°”λ‘œλ°”λ‘œ λ°±μ€€μ—μ„œ ν‘ΈλŠ”κ²Œ μ’‹λ‚˜μš”?
λ‹΅λ³€. κ·Έλƒ₯ IDEμ—μ„œ ν‘ΈλŠ”κ²Œ μΌλ°˜μ μž…λ‹ˆλ‹€. λ°±μ€€μ—μ„œ λ°”λ‘œ ν‘ΈλŠ” μ‚¬λžŒμ€... μ—†μ§€ μ•Šμ„κΉŒμš”?

λ°˜μ‘ν˜•