โœ๏ธ 24.12.13 TIL

Dadaยท2024๋…„ 12์›” 13์ผ

๐Ÿ“… TO DO


  • QCC 1ํšŒ์ฐจ ์‹œํ—˜
  • ๋ฐ์ดํ„ฐ ๋ฆฌํ„ฐ๋Ÿฌ์‹œ 5๊ฐ• ์ˆ˜๊ฐ•
  • Python ์ฝ”๋“œ์นดํƒ€ 23๋ฒˆ ๋ฆฌ๋ทฐ
  • Python ๊ณผ์ œ ๋ฆฌ๋ทฐ
  • Python ๋ผ์ด๋ธŒ ์„ธ์…˜ ์ˆ˜๊ฐ•

๐Ÿ“ MEMO


โ–ถ ๋ฐ์ดํ„ฐ ๋ฆฌํ„ฐ๋Ÿฌ์‹œ - 5. ๊ฒฐ๋ก ๋„์ถœ
โ–ถ Python ์ฝ”๋“œ์นดํƒ€ 23๋ฒˆ ๋ฆฌ๋ทฐ
โ–ถ Python ๋ผ์ด๋ธŒ ์„ธ์…˜

โ–ถ Python ์ฝ”๋“œ์นดํƒ€ ๋ฆฌ๋ทฐ

โœ… 23๋ฒˆ. ์ฝœ๋ผ์Šค ์ถ”์ธก
1937๋…„ Collatz๋ž€ ์‚ฌ๋žŒ์— ์˜ํ•ด ์ œ๊ธฐ๋œ ์ด ์ถ”์ธก์€, ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 1์ด ๋  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๋ฉด, ๋ชจ๋“  ์ˆ˜๋ฅผ 1๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์ถ”์ธก์ž…๋‹ˆ๋‹ค. ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1-1. ์ž…๋ ฅ๋œ ์ˆ˜๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด 2๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. 
1-2. ์ž…๋ ฅ๋œ ์ˆ˜๊ฐ€ ํ™€์ˆ˜๋ผ๋ฉด 3์„ ๊ณฑํ•˜๊ณ  1์„ ๋”ํ•ฉ๋‹ˆ๋‹ค. 
2. ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ ์ˆ˜์— ๊ฐ™์€ ์ž‘์—…์„ 1์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 6์ด๋ผ๋ฉด 6 โ†’ 3 โ†’ 10 โ†’ 5 โ†’ 16 โ†’ 8 โ†’ 4 โ†’ 2 โ†’ 1 ์ด ๋˜์–ด ์ด 8๋ฒˆ ๋งŒ์— 1์ด ๋ฉ๋‹ˆ๋‹ค. ์œ„ ์ž‘์—…์„ ๋ช‡ ๋ฒˆ์ด๋‚˜ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ๋‹จ, ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 1์ธ ๊ฒฝ์šฐ์—๋Š” 0์„, ์ž‘์—…์„ 500๋ฒˆ ๋ฐ˜๋ณตํ•  ๋•Œ๊นŒ์ง€ 1์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด โ€“1์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ์„ธ์š”.

  • ๋ฌธ์ œ ์ƒํ™ฉ : ๊ฒฐ๊ณผ ๊ฐ’ ์ถœ๋ ฅ ์˜ค๋ฅ˜
  • ์›์ธ : ์กฐ๊ฑด ์„ค์ •์ด ์ž˜๋ชป๋จ
    โ†’ while๋ฌธ์ด count โ‰ค 500์ธ ๋™์•ˆ ๊ณ„์† ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰
    โ†’ num ๊ฐ’์€ ๊ณ„์† ์—ฐ์‚ฐ์ด ๋˜๊ธด ํ•˜์ง€๋งŒ while๋ฌธ์€ count๊ฐ€ 500์„ ๋„˜์–ด์•ผ๋งŒ ์ค‘๋‹จ๋จ
  • ํ•ด๊ฒฐ ๋ฐฉ์•ˆ: while๋ฌธ์„ True ์ƒํƒœ๋กœ ๋‘๊ณ  while๋ฌธ ๋‚ด๋ถ€์— ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๊ธฐ์žฌํ•˜๊ธฐ
# ์˜ค๋ฅ˜ ์ฝ”๋“œ 
def solution(num):
    answer = 0
    count = 0
    if num == 1:
        answer = 0
    else: 
        while count <= 500:
            count += 1
            if num == 1:
                answer = count
            elif count == 500:
                answer = -1
            elif num % 2 == 0:
                num = num // 2
            elif num % 2 == 1:
                num = num * 3 + 1
    return answer
# ์ˆ˜์ •๋œ ์ฝ”๋“œ
def solution(num):
    answer = 0
    count = 0
    if num == 1: # num์ด 1๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ ํ•„ํ„ฐ๋ง
        answer = 0
    else:
        while True:
            if count == 500: 
                answer = -1
                break # count๊ฐ€ 500์ด ๋˜๋ฉด while๋ฌธ ์ข…๋ฃŒ ํ›„ answer ๋ฐ˜ํ™˜
            elif num == 1:
                answer = count
                break # num์ด 1์ด ๋˜๋ฉด while๋ฌธ ์ข…๋ฃŒ ํ›„ count ๋ฐ˜ํ™˜
            elif num % 2 == 0:
                num = num // 2
            elif num % 2 != 0:
                num = num*3+1
            count += 1 # while๋ฌธ ๋ฐ˜๋ณต ํšŸ์ˆ˜ count
    return answer

โ–ถ ํŒŒ์ด์ฌ ๊ฐœ๋ณ„ ๊ณผ์ œ ๋ฆฌ๋ทฐ

1. enumerate()

  • ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ(๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋ฌธ์ž์—ด)๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์ธ๋ฑ์Šค ๊ฐ’์„ ํฌํ•จํ•˜๋Š” enumerate ๊ฐ์ฒด ๋ฆฌํ„ด
  • ์ฃผ๋กœ for๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค
# ์˜ˆ์‹œ ์ฝ”๋“œ
for i, name in enumerate(['body', 'foo', 'bar']):
     print(i, name)
     
"""
[ ์ถœ๋ ฅ ๊ฒฐ๊ณผ ]
0 body
1 foo
2 bar
"""

2. ๋”•์…”๋„ˆ๋ฆฌ ์Œ ์ถ”๊ฐ€ํ•˜๊ธฐ

  • dict[key] = โ€˜valueโ€™ ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๊ธฐ์กด์˜ ๋”•์…”๋„ˆ๋ฆฌ์— ์Œ ์ถ”๊ฐ€
  • key๊ฐ€ ๊ธฐ์กด ๋”•์…”๋„ˆ๋ฆฌ์— ์กด์žฌํ•˜์ง€ ๊ฒฝ์šฐ ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜๋ฉฐ, key๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” value๋งŒ ์—…๋ฐ์ดํŠธ
# ์˜ˆ์‹œ ์ฝ”๋“œ
a = {1: 'a'}
 
# ์ƒˆ๋กœ์šด key, value ์ถ”๊ฐ€
a[2] = 'b'
print(a) # ์ถœ๋ ฅ ๊ฒฐ๊ณผ: {1: 'a', 2: 'b'}

# ๊ธฐ์กด key์— ์ƒˆ๋กœ์šด value ์—…๋ฐ์ดํŠธ
a[1] = 'b'
print(a) # ์ถœ๋ ฅ ๊ฒฐ๊ณผ: {1: 'b', 2: 'b'}

3. ๋ฌธ์ž์—ด ๋‹ค๋ฃจ๊ธฐ

  • ๋ฌธ์ž์—ด ๋‚˜๋ˆ„๊ธฐ - split()
    • ๊ด„ํ˜ธ ์•ˆ์— ์•„๋ฌด ๊ฐ’๋„ ๋„ฃ์ง€ ์•Š์„ ๊ฒฝ์šฐ
      โ†’ [Space] , [Tab] , [Enter] )๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆ”
    • ๊ด„ํ˜ธ ์•ˆ์— ํŠน์ • ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฐ’์„ ๊ตฌ๋ถ„์ž๋กœ ํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆ ์คŒ
a = "Life is too short"
a.split()
'''
[ 'Life', 'is', 'too', 'short']
'''
b = "a:b:c:d"
b.split(':')
'''
['a','b','c','d']
'''
  • ๋ฌธ์ž์—ด ์œ„์น˜ ์ฐพ๊ธฐ - find()
    • ์ฐพ๋Š” ๋ฌธ์ž๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋‚˜์˜จ ์œ„์น˜(์ธ๋ฑ์Šค)๋ฅผ ๋ฐ˜ํ™˜
    • ๋งŒ์•ฝ ์ฐพ๋Š” ๋ฌธ์ž๋‚˜ ๋ฌธ์ž์—ด์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด -1 ๋ฐ˜ํ™˜
a = "Python is the best choice"

print(a.find('b')) # ์ถœ๋ ฅ: 14
print(a.find('k')) # ์ถœ๋ ฅ: -1
  • str.endswith(suffix[, start[, end]])
    • ๋ฌธ์ž์—ด์ด ์ง€์ •๋œ suffix๋กœ ๋๋‚˜๋ฉด True , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด False ๋ฐ˜ํ™˜
    • suffixย = ํ™•์ธํ•  ์ ‘๋ฏธ์‚ฌ ๋ฌธ์ž์—ด ๋˜๋Š” ๋ฌธ์ž์—ด์˜ ํŠœํ”Œ
    • start = ๊ฒ€์‚ฌํ•  ์‹œ์ž‘ ์œ„์น˜์˜ ์ธ๋ฑ์Šค โ†’ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ž์—ด์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฒ€์‚ฌ
    • end = ๊ฒ€์‚ฌํ•  ๋ ์œ„์น˜์˜ ์ธ๋ฑ์Šค โ†’ ์ง€์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด ๋๊นŒ์ง€ ๊ฒ€์‚ฌ

0๊ฐœ์˜ ๋Œ“๊ธ€