μΈν¬λ§ˆν‹± 2024. 11. 9. 15:16

1. λ°±μ€€ 1436번 μ˜ν™”κ°λ… 숌

λ°±μ€€ 1436번: μ˜ν™”κ°λ… 숌 

 

 

2. 였늘의 νšŒκ³ 

 

0. 문제 뢄석

μ’…λ§μ˜ μˆ˜λž€ μ–΄λ–€ μˆ˜μ— 6이 적어도 3개 이상 μ—°μ†μœΌλ‘œ λ“€μ–΄κ°€λŠ” 수λ₯Ό λ§ν•œλ‹€. 제일 μž‘μ€ μ’…λ§μ˜ μˆ˜λŠ” 666이고, κ·Έ λ‹€μŒμœΌλ‘œ 큰 μˆ˜λŠ” 1666, 2666, 3666, .... 이닀. λ”°λΌμ„œ, μˆŒμ€ 첫 번째 μ˜ν™”μ˜ 제λͺ©μ€ "μ„Έμƒμ˜ 쒅말 666", 두 번째 μ˜ν™”μ˜ 제λͺ©μ€ "μ„Έμƒμ˜ 쒅말 1666"와 같이 이름을 지을 것이닀. μΌλ°˜ν™”ν•΄μ„œ μƒκ°ν•˜λ©΄, N번째 μ˜ν™”μ˜ 제λͺ©μ€ μ„Έμƒμ˜ 쒅말 (N번째둜 μž‘μ€ μ’…λ§μ˜ 수) 와 κ°™λ‹€.

 

: μ²˜μŒμ—λŠ” μ•žλ’€λ‘œ 숫자λ₯Ό λ”ν•˜λ©΄μ„œ λΆ™μ—¬μ•Ό ν•˜λŠ”μ§€ ν•΄κ²° 방법이 보이지 μ•Šμ•˜λ‹€. μž…λ ₯ λ²”μœ„λ₯Ό 보고 브루트포슀둜 해결해도 λœλ‹€λŠ” 생각을 ν•œ ν›„ 문제λ₯Ό ν’€ 수 μžˆμ—ˆλ‹€. 

 

브루트 포슀 μ•Œκ³ λ¦¬μ¦˜μ€ μ‹œκ°„κ³Ό μžμ›μ΄ μ—„μ²­λ‚˜κ²Œ λ“€μ–΄μ„œ 얼핏 보면 λ¬΄μ‹ν•˜κ³  λΉ„νš¨μœ¨μ μ΄λΌκ³  생각할 μˆ˜λ„ μžˆκ² μ§€λ§Œ, μ •확도 100%λ₯Ό 보μž₯ν•œλ‹€λŠ” μ μ—μ„œ κ°•λ ₯ν•œ μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. 예λ₯Ό λ“€μ–΄ 4자리의 λΉ„λ°€λ²ˆν˜Έλ₯Ό μ°Ύμ•„μ•Ό ν•œλ‹€κ³  ν–ˆμ„λ•Œ, 0000λΆ€ν„° 9999κΉŒμ§€ 수λ₯Ό λ†’μ—¬κ°€λ©° μ°Ύμ•˜μ„ λ•Œ λ‚΄κ°€ μ›ν•˜λŠ” 수λ₯Ό 찾을 수 μžˆλ‹€. 

 

1. μž…λ ₯

첫째 쀄에 N이 μ£Όμ–΄μ§„λ‹€. N은 10,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€.

: μž…λ ₯ λ²”μœ„λ₯Ό λ³΄λ‹ˆ, 브루트포슀λ₯Ό 해도 무리가 μ•„λ‹Œ λ²”μœ„μ΄λ‹€.

 

2. 좜λ ₯

첫째 쀄에 N번째 μ˜ν™”μ˜ 제λͺ©μ— λ“€μ–΄κ°„ 수λ₯Ό 좜λ ₯ν•œλ‹€.

 

3. 문제 μ ‘κ·Ό

λ‹¨μˆœν•˜κ²Œ 666λΆ€ν„° μ‹œμž‘ν•˜μ—¬ 1μ”© λ”ν•˜λ©΄μ„œ κ·Έ μˆ«μžμ— 666이 λ‚˜μ˜€λ©΄ μΉ΄μš΄νŠΈν•˜λŠ”κ±Έ λ°˜λ³΅ν•œλ‹€. μ£Όμ–΄μ§„ μž…λ ₯Nκ³Ό κ°™μ•„μ§€λ©΄ κ·Έ 값이 μ˜ν™”μ˜ 제λͺ© μˆ«μžκ°€ λœλ‹€. λ”°λΌμ„œ 브루트 포슀둜 λ°˜λ³΅λ¬Έμ„ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

 

endλŠ” 666λΆ€ν„° μ‹œμž‘ν•˜μ—¬ 1μ”© 더해간닀. λ”ν•΄κ°€λŠ” μˆ«μžμ— 666이 λ‚˜μ˜€λ©΄ cnt에 카운트 ν›„ cntκ°€ μž…λ ₯nκ³Ό 같을 μ‹œ break. 

n = int(input())
end = 666
cnt = 0

while True:
    if '666' in str(end):
        cnt = cnt+1
        if cnt==n:
            print(end)
            break
    end = end+1