์ง€๊ตฅ
Long day's journey into
์ง€๊ตฅ

ํ‹ฐ์Šคํ† ๋ฆฌ

  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (46)
    • ๊ฐœ๋ฐœ (44)
      • TIL (11)
      • JavaScript (0)
      • Python (2)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (30)
      • Git (1)
    • ์ฑ… (1)
    • ์ผ์ƒ (1)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
hELLO ยท Designed By ์ •์ƒ์šฐ.
์ง€๊ตฅ

Long day's journey into

๊ฐœ๋ฐœ/TIL

#210930

2021. 10. 1. 02:15

๐Ÿชด ๋ชฉ์š”์ผ TIL๐Ÿชด

 

โœ๏ธ  ํŒŒ์ด์ฌ์˜ ์žฌ๊ท€ํ•จ์ˆ˜ ๊นŠ์ด ์ œํ•œ์€ ๊ธฐ๋ณธ์ด 1000์ด๋‹ค.

ํŒŒ์ด์ฌ์œผ๋กœ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ, recursion error๋ฅผ ๊ฐ€๋” ๋งŒ๋‚  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ด์ฌ ์žฌ๊ท€ํ•จ์ˆ˜์˜ ๊นŠ์ด ์ œํ•œ์€ ๊ธฐ๋ณธ์ด 1000์ธ๋ฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„  ๊ทธ ์ด์ƒ์„ ํ˜ธ์ถœํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿด๋• sys๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์žฌ๊ท€ํ•จ์ˆ˜์˜ ์ œํ•œ์„ ๋Š˜๋ ค์ฃผ๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿผ์—๋„ recursion error๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด ์žฌ๊ท€ ๊นŠ์ด๋ฅผ ๋” ๋Š˜๋ ค์ฃผ๊ฑฐ๋‚˜, ํฌ๊ฒŒ ๋Š˜๋ ธ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. (์žฌ๊ท€์˜ ๊นŠ์ด๊ฐ€ ์ฑ„์  ์„œ๋ฒ„๊ฐ€ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†๋Š” ์ •๋„๋กœ ๊นŠ์€ ๊ฒฝ์šฐ์—๋„ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธด๋‹ค.)

import sys
sys.setrecursionlimit(10**7) # ์›ํ•˜๋Š” ์ˆซ์ž๋งŒํผ ์ž…๋ ฅ
# sys.getrecursionlimit() ์ตœ๋Œ€ ์žฌ๊ท€ ๊นŠ์ด๋ฅผ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜

โœ๏ธ  ํŒŒ์ด์ฌ round()ํ•จ์ˆ˜์—์„  ๋ถ€๋™์†Œ์ˆ˜์ ์„ ์กฐ์‹ฌํ•ด์•ผ ํ•œ๋‹ค.

์˜ค๋Š˜ roundํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ถ€๋™์†Œ์ˆ˜์  ๋•Œ๋ฌธ์— ์• ๋ฅผ ๋งŽ์ด ๋จน์—ˆ๋‹ค.

tmp1 = 0
tmp2 = 0
for i in range(3):
    tmp1 += 1/3
    print("tmp1",i+1,tmp1)
    tmp2 += round(1/3,5)
    print("tmp2",i+1,tmp2)

# tmp1 1 0.3333333333333333
# tmp2 1 0.33333
# tmp1 2 0.6666666666666666
# tmp2 2 0.66666
# tmp1 3 1.0
# tmp2 3 0.99999

print(tmp1)    # 1.0
print(tmp2)   # 0.99999

tmp1์ด๋‚˜ tmp2๋‚˜ ๋˜‘๊ฐ™์€ ๊ฐ’์ด ๋‚˜์˜ฌ์ค„ ์•Œ์•˜๋Š”๋ฐ ์•„๋‹ˆ์—ˆ๋‹ค... tmp1๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์›ํ–ˆ๋Š”๋ฐ tmp2 ๊ฐ™์€ ๊ฒฐ๊ณผ๋งŒ ๋‚˜์˜ค๋‹ˆ ์ฒ˜์Œ์—” ๋‚ด๊ฐ€ roundํ•จ์ˆ˜๋ฅผ ์ž˜๋ชป ๊ธฐ์–ตํ–ˆ๋‚˜ ์‹ถ์—ˆ๋‹ค. print(round(0.99999999999999,5))๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด 1.0์ด ๋‚˜์™€์„œ ๋” ํ—ท๊ฐˆ๋ ธ๋‹ค. ์•Œ๊ณ ๋ณด๋‹ˆ ๋ถ€๋™์†Œ์ˆ˜์ ์„ ์ง€์›ํ•˜๋Š” ์–ธ์–ด๋Š” ๋‹ค ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ธํ„ฐ๋„ท์œผ๋กœ ์ด์œ ๋ฅผ ์ฐพ์•„๋ณด๋‹ˆ ์ƒ๊ฐ๋ณด๋‹ค ๋ณต์žกํ–ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ 10์ง„ ์†Œ์ˆ˜์˜ ์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋‹ค๋ณด๋‹ˆ ์˜ค์ฐจ๊ฐ€ ์ƒ๊ฒจ์„œ...๋ผ๊ณ  ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋‹ค. 

 

๋”๋ณด๊ธฐ

https://www.acmicpc.net/blog/view/37

 

๋ถ€๋™์†Œ์ˆซ์  ์˜ค๋ฅ˜

๊ฒŒ์‹œํŒ์— ์˜ฌ๋ผ์˜ค๋Š” "์ด ์ฝ”๋“œ๋Š” ์™œ ํ‹€๋ ธ๋‚˜์š”?" ๋ฅ˜์˜ ์งˆ๋ฌธ ์ค‘ ๋ถ€๋™์†Œ์ˆซ์  ์˜ค๋ฅ˜ ๋•Œ๋ฌธ์— ํ‹€๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฝค ๋งŽ์ด ๋ณด์—ฌ์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ช‡ ๊ฐ€์ง€ ์จ๋ด…๋‹ˆ๋‹ค. 0. ๋ถ€๋™์†Œ์ˆซ์  ์˜ค๋ฅ˜ ๋ชจ๋“  ์‹ค์ˆ˜๋ฅผ 8byte, ํ˜น์€ 12~16byte

www.acmicpc.net

 

 

 

๋ฐ˜์˜ฌ๋ฆผ์„ ์ œ๋Œ€๋กœ ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ๋‹ค. 10**(๋ฐ˜์˜ฌ๋ฆผํ•  ์ž๋ฆฌ์ˆ˜)๋กœ ์ˆ˜๋ฅผ ๊ณฑํ•˜๊ณ  ๋’ค์— ๋‚จ์€ ์†Œ์ˆ˜์ ์€ ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ 10**(๋ฐ˜์˜ฌ๋ฆผํ•  ์ž๋ฆฌ์ˆ˜)๋กœ ๋‚˜๋ˆˆ ๊ฐ’์„ round ํ•จ์ˆ˜์— ๋„ฃ์–ด์„œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š”๋‹ค.

tmp1 = 0
tmp2 = 0
tmp3 = 0
for i in range(3):
    tmp1 += 1/3
    print("tmp1",i+1,tmp1)
    tmp2 += round(1/3,5)
    print("tmp2",i+1,tmp2)
    tmp3 += math.trunc(1/3 * 100000)


print(tmp1)    # 1.0
print(tmp2)   # 0.99999   # ์˜ค๋ฅ˜๋กœ ์ž˜๋ชป ๋‚˜์˜จ ๊ฐ’
print(round(tmp3/100000)) # 1  ์›ํ•˜๋˜ ๊ฐ’

โœ๏ธ  ํŒŒ์ด์ฌ์˜ ์ง‘ํ•ฉ ์ž๋ฃŒํ˜• set

์ง‘ํ•ฉ ์ž๋ฃŒํ˜•์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ , ์ˆœ์„œ๊ฐ€ ์—†๋‹ค. list๋ฟ๋งŒ ์•„๋‹ˆ๋ผ str, tuple ๋“ฑ ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•œ(iterable)์ž๋ฃŒํ˜•์— ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ž๋ฃŒ์—์„œ ์ค‘๋ณต์„ ์ œ์™ธํ•œ ๊ฐ’๋งŒ ๋ณด๊ณ ์‹ถ์„ ๋•Œ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค.


๐Ÿ‘์˜ค๋Š˜ ํ•œ ์ผ๐Ÿ‘

 

๐ŸŒธ ์—˜๋ฆฌ์Šค์ฝ”๋”ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€๊ธฐ

 ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋Š” ์–ธ์ œ ํ’€์–ด๋„ ํž˜๋“ค๋‹ค... ์–ธ์ œ์ฏค ํŽธํ•ด์งˆ์ง€...ใ…  ๋ฐ”๋กœ ๋‚ด์ผํ•˜๊ณ  ๋ชจ๋ ˆ๋ถ€ํ„ฐ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์ธ๋ฐ ๋งŽ์ด ๋ชปํ’€์—ˆ๋‹ค... ๋ฐฑ์ค€์€ ๊ฒŒ์‹œํŒ์—์„œ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํžŒํŠธ๋ฅผ ๊ฝค ์–ป์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์—˜๋ฆฌ์Šค์ฝ”๋”ฉ์€ ํŠœํ„ฐ์—๊ฒŒ ์งˆ๋ฌธํ•˜๋Š” ๋ฐฉ๋ฒ•๋ฐ–์— ์—†๋‹ค. ์•„๋‹ˆ๋ฉด ํ˜ผ์ž ๊ฒ€์ƒ‰ํ•ด์„œ ์ฐพ๊ฑฐ๋‚˜... ๊ทธ๋ฆฌ๊ณ  ์ฐธ ๋ฐ”๋ณด๊ฐ™๊ฒŒ๋„ ๋ชจ์˜ํ…Œ์ŠคํŠธ๋ฅผ ์‘์‹œ ๋ชปํ–ˆ๋‹ค. 30์ผ๊นŒ์ง€์ธ์ง€ ๋ชฐ๋ž๋Š”๋ฐ ์”ป๊ณ  12์‹œ ์ง€๋‚˜์„œ ์น˜๋ ค๊ณ ํ•˜๋‹ˆ๊นŒ ์ฝ”์Šค์—์„œ ํŠ•๊ฒผ๋‹ค...ใ…  ๋„ˆ๋ฌด ์•„์‰ฝ์ง€๋งŒ ์‹ค์ „ํ…Œ์ŠคํŠธ๋Š” ๊ผญ ์ž˜ ํ’€์–ด์•ผ์ง€!!

 


๐Ÿค—๋‚ด์ผ ๋‹ค์ง๐Ÿค—

 

๐Ÿ“Œ ๊ต์œก ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ…Œ์ŠคํŠธ ์‘์‹œ(2์ผ ์ž์ •๊นŒ์ง€)

๐Ÿ“Œ ์˜ค๋Š˜์ฒ˜๋Ÿผ ํŒŒ์ดํŒ…ํ•˜๊ธฐ!!!๐Ÿ‘

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๊ฐœ๋ฐœ > TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

#211007  (0) 2021.10.08
#211001  (0) 2021.10.02
#210917  (0) 2021.09.18
#210916 TIL  (0) 2021.09.17
#210915 TIL  (0) 2021.09.16
    '๊ฐœ๋ฐœ/TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • #211007
    • #211001
    • #210917
    • #210916 TIL
    ์ง€๊ตฅ
    ์ง€๊ตฅ
    ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋ ค๊ณ  ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”