λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm/μ΄μ½”ν…Œ

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

 

 

문제 

 

μ •μˆ˜ N이 μž…λ ₯되면 00μ‹œ 00λΆ„ 00μ΄ˆλΆ€ν„° Nμ‹œ 59λΆ„ 59μ΄ˆκΉŒμ§€μ˜ λͺ¨λ“  μ‹œκ° μ€‘μ—μ„œ 3이 ν•˜λ‚˜λΌλ„ ν¬ν•¨λ˜λŠ”
λͺ¨λ“  경우의 수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ. 예λ₯Ό λ“€μ–΄ 1을 μž…λ ₯ν–ˆμ„ λ•Œ
λ‹€μŒμ€ 3이 ν•˜λ‚˜λΌλ„ ν¬ν•¨λ˜μ–΄ μžˆμœΌλ―€λ‘œ μ„Έμ–΄μ•Ό ν•˜λŠ” μ‹œκ°μ΄λ‹€

  • 00μ‹œ 00λΆ„ 03초
  • 00μ‹œ 13λΆ„ 30초

λ°˜λ©΄μ— λ‹€μŒμ€ 3이 ν•˜λ‚˜λ„ ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ―€λ‘œ μ„Έλ©΄ μ•ˆ λ˜λŠ” μ‹œκ°μ΄λ‹€

  • 00μ‹œ 02λΆ„ 55초
  • 01μ‹œ 27λΆ„ 45초

 

μž…λ ₯ 

첫째 쀄에 μ •μˆ˜ N이 μž…λ ₯λœλ‹€.(0<=N<=23)

 

 

좜λ ₯ 

00μ‹œ 00λΆ„ 00μ΄ˆλΆ€ν„° Nμ‹œ 59λΆ„ 59μ΄ˆκΉŒμ§€μ˜ λͺ¨λ“  μ‹œκ° μ€‘μ—μ„œ 3이 ν•˜λ‚˜λΌλ„ ν¬ν•¨λ˜λŠ” λͺ¨λ“  경우의 수λ₯Ό 좜λ ₯ν•œλ‹€.

 

 

ν•΄μ„€ μ½”λ“œ
# μ‹œκ°„μ—μ„œ μ‹œκ°μ˜ 값이 λ˜λŠ” hλ₯Ό inputν•œλ‹€.
h = int(input())
count = 0

for i in range(h+1):
  for j in range(60):
    for k in range(60):
      # 0μ‹œ ~ hμ‹œ μ‚¬μ΄μ˜ μ‹œκ°„ 쀑 3이 ν¬ν•¨λœ μ‹œκ°„μ˜ 개수λ₯Ό μ„Όλ‹€. 
      # μ΄λ•Œ 3은 λ¬Έμžμ—΄λ‘œ μž…λ ₯ν•˜κ³  i,j,k λͺ¨λ‘ str둜 λ³€ν™˜ν•˜μ—¬ λ¬Έμžμ—΄μ—μ„œ νŠΉμ • 문자의 개수λ₯Ό κ΅¬ν•˜λŠ” 방법 μ‚¬μš©ν•œλ‹€.
      if '3' in str(i) + str(j) + str(k):
        count += 1

print(count)

: 이 λ¬Έμ œλŠ” 완전탐색(Brute force)라고도 ν•  수 μžˆλŠ” λ¬Έμ œμ΄λ‹€. 쀑첩 λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬ 0μ‹œ ~ hμ‹œ κΉŒμ§€μ˜ λͺ¨λ“  경우의 수λ₯Ό κ³ λ €ν•œ ν›„, 이λ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜μ—¬ λ¬Έμžμ—΄ μ€‘μ—μ„œ 문자 '3'κ³Ό λ™μΌν•œ λ¬Έμžκ°€ μžˆλŠ” 경우 count 값을 μ¦κ°€ν•˜λŠ” λ°©μ‹μœΌλ‘œ 문제λ₯Ό ν•΄κ²°ν•˜μ˜€λ‹€.