Algorithm/Baekjoon

[python3] 이것이 취업을 μœ„ν•œ μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ - μ‹œκ° (ch4. κ΅¬ν˜„)

감자 πŸ₯” 2021. 6. 18. 17:05
λ°˜μ‘ν˜•

μ°Έκ³ ) μ΄κ²ƒμ΄ 취업을 μœ„ν•œ μ½”λ”©ν…ŒμŠ€νŠΈλ‹€ with 파이썬 μ±…을 기반으둜 μž‘μ„±λœ λ¬Έμ œμ™€ μ½”λ“œμž…λ‹ˆλ‹€. 
λ”°λΌμ„œ λ¬Έμ œλŠ” μžμ„Έν•˜κ²Œ 적지 μ•Šκ³ , κ°„λ‹¨ν•œ μ„€λͺ…κ³Ό 제 μ½”λ“œλ§Œ μ˜¬λ¦¬κ² μŠ΅λ‹ˆλ‹€.

http://www.yes24.com/Product/Goods/91433923

 

이것이 취업을 μœ„ν•œ μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ with 파이썬 - YES24

λ‚˜λ™λΉˆ μ €μžμ˜ 유튜브 라이브 방솑 https://www.youtube.com/c/dongbinnaIT 취쀀생이라면 λˆ„κ΅¬λ‚˜ μž…μ‚¬ν•˜κ³  싢은 카카였 · μ‚Όμ„±μ „μž · 넀이버 · 라인!μ·¨μ—…μ˜ 성곡 μ—΄μ‡ λŠ” μ•Œκ³ λ¦¬μ¦˜ 인터뷰에 μžˆλ‹€!IT 취쀀생

www.yes24.com

 

예제 4-2) μ‹œκ°

- hh:mm:ss ν˜•νƒœμ˜ μ‹œκ°μ˜ κ²½μš°μ˜ μˆ˜λ₯Ό μ„Όλ‹€.
- N이 μž…λ ₯되면 00:00:00 λΆ€ν„° N:59:59 κΉŒμ§€μ˜ N이 ν¬ν•¨λœ μ‹œκ°μ˜ κ°œμˆ˜λ₯Ό μ„Όλ‹€.
- 0 <= N <= 23
- 10 μ΄μƒμ˜ μˆ˜κ°€ N으둜 μž…λ ₯되면, hh, mm, ss κ°€ 10 일 λ•Œμ˜ 경우의 수만 μ„Όλ‹€.

<λ¬Έμ œν’€μ΄>

κ·Έλƒ₯ 3쀑 for문을 ν™œμš©ν•΄μ„œ ν’€μ—ˆλ‹€. 

<λ‚΄κ°€ ν‘Ό 잘λͺ»λœ 풀이>

  • μ²˜μŒμ— str()+str()+str()둜 풀지 μ•Šκ³  list둜 ν’€μ—ˆλ‹€. 
  • 닡이 λ‹€λ₯΄κ²Œ λ‚˜μ˜€κΈΈλž˜ λ‹€μ‹œ ν•œ 번 μƒκ°ν•΄λ³΄λ‹ˆκΉŒ 
  • list 에 λ§Œμ•½ N이 2일 λ•Œ,  1μ‹œ 32λΆ„ 44초 도 countλ₯Ό ν•΄μ£Όμ–΄μ•Όν•œλ‹€. 32뢄에 2κ°€ λ“€μ–΄κ°€κΈ° λ•Œλ¬Έμ΄λ‹€.
  • ν•˜μ§€λ§Œ, listν˜•νƒœλΌλ©΄, tiem = [1, 32,  44] κ°€ 되며,  if 2 in time : ν–ˆμ„λ•Œ, countν•˜μ§€ λͺ»ν•˜κ²Œ λœλ‹€.
  • λ”°λΌμ„œ μ–΄λ–»κ²Œ 할지 κ³ λ―Όν•˜λŠ”λ° μ‹œκ°„μ΄ μ’€ 걸렸던 것 κ°™λ‹€.
def solution(N):
    count = 0
    for i in range(0, N+1):
        for j in range(0,60):
            for k in range(0, 60):
                time = []
                time.append(i)
                time.append(j)
                time.append(k)
                if N in time:
                    count += 1
                else:
                    pass
    return count

 

<λ‚΄κ°€ ν‘Ό λ§žλŠ” 풀이>

  • μ΄λ ‡κ²Œ str 으둜 λ§Œλ“€μ–΄μ„œ μœ„μ™€ 같은 μ˜ˆμ‹œλ₯Ό λ¬Έμžμ—΄ tiem = '13244' 둜 λ§Œλ“€μ–΄ 버린 ν›„, if 2 in time: ν•˜κ²Œ 되면 2κ°€ time μ•ˆμ— λ“€μ–΄ μžˆλ‹€κ³  νŒλ‹¨λ˜μ–΄ count ν•΄μ£Όκ²Œ λœλ‹€. 사싀 μ±…μ˜ λ¬Έμ œν’€μ΄ λ‚΄μš©μ„ 쑰금 μ°Έκ³ ν•΄μ„œ ν’€μ—ˆλ‹€. γ… γ…  
def solution(N):
    count = 0
    for i in range(0, N+1):
        for j in range(0,60):
            for k in range(0, 60):
                time = str(i) + str(j) + str(k)
                if str(N) in time:
                    count += 1
                else:
                    pass
    return count

 

<μ±…μ˜ μ •λ‹΅κ³Ό 비ꡐ>

닡이 κ°™λ‹€. 일단 str의 ν˜•νƒœλ‘œ λ§Œλ“€μ–΄μ„œ ν‘ΈλŠ” 것을 μ°Έκ³ ν•΄μ„œ ν’€μ—ˆμ§€λ§Œ, κ·Έλž˜λ„ for문을 μ€‘μ²©μœΌλ‘œ μ΄μš©ν•΄μ„œ ν‘Όλ‹€λŠ” 방식은 λ˜‘κ°™μ•˜λ‹€. 문제λ₯Ό ν’€ λ‹Ήμ‹œ μ—°μ†λœ μˆ«μžκ°€ λ¬Έμžμ—΄λ‘œ 듀어왔을 λ•Œ, int와 달리 ν•œ 숫자 ν•œ 숫자 μ”© 비ꡐ할 수 μžˆλ‹€λŠ” 사싀을 μƒκ°ν•˜μ§€ λͺ»ν•˜μ˜€λ‹€. list, str, λ“± κΈ°λ³Έ ν˜•νƒœμ— λŒ€ν•œ ν™œμš©κ³Ό κ·Έ νŠΉμ§•μ„ λ‹€μ‹œ ν•œ 번 짚고 λ„˜μ–΄κ°€μ•Ό ν•  것 κ°™λ‹€. κΈ°λ³Έ λ¬Έλ²•μ˜ μ€‘μš”μ„±!

λ°˜μ‘ν˜•