Algorithm/Implement

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/ ๋ชจ์Œ์‚ฌ์ „

์ •ํ˜ธ๋‚˜ 2024. 12. 28. 20:16

๐Ÿ“• ๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

 

 

๐Ÿ“„ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ํ’€์ด

 

  • itertools.product:

    • repeat=i๋ฅผ ์‚ฌ์šฉํ•ด ๊ธธ์ด๊ฐ€ i์ธ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์กฐํ•ฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ: i=2์ผ ๋•Œ, ๊ฒฐ๊ณผ๋Š” ('A', 'A'), ('A', 'E'), ..., ('U', 'U').
  • words.append("".join(j)):
    • ์ƒ์„ฑ๋œ ํŠœํ”Œ(('A', 'A'))์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • words.sort():
    • ์ƒ์„ฑ๋œ ๋‹จ์–ด๋“ค์„ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
  • words.index(word) + 1:
    • ์ž…๋ ฅ ๋‹จ์–ด์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ 1์„ ๋”ํ•ด ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ’ป ๋‚ด ์ฝ”๋“œ

 

# A,E,I,O,U
# word๊ฐ€ A๋Š” 1๋ฒˆ์งธ, AA 2๋ฒˆ์จฐ, AAA 3๋ฒˆ์จฐ... ๋“ฑ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์กฐํ•ฉ ๋งŒ๋“ค๊ธฐ
# ๊ธธ์ด 5 ๋ฌธ์ž์—ด์—์„œ ๋ช‡ ๋ฒˆ์จฐ์ธ์ง€ ์ˆœ์„œ๊ตฌํ•˜๊ธฐ
from itertools import product

def solution(word):
  
    wordlist = ['A','E','I','O','U']
    
    words =[]
    
# ์ด 5๊ฐœ ๊ธธ์ด ์ •๋ ฌ๋œ words ๋ชจ์Œ
    for i in range(1,6):
        for j in product(wordlist, repeat = i):
            words.append("".join(j))
            words.sort()
        
   
    
    return words.index(word) + 1

 

๐Ÿ’ป ๋‹ต์•ˆ

  //

 

๐Ÿ“ ์ฐธ๊ณ ์ž๋ฃŒ

 

โ˜บ๏ธ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ง€์‹

 

1. join์‚ฌ์šฉ๋ฒ•

 

'๊ตฌ๋ถ„์ž'.join(๋ฆฌ์ŠคํŠธ)
:

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜จ ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ์š”์†Œ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ํ•ฉ์ณ์„œ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

- ''.join(๋ฆฌ์ŠคํŠธ)
''.join(๋ฆฌ์ŠคํŠธ)๋ฅผ ์ด์šฉํ•˜๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜จ ['a', 'b', 'c'] ์ด๋Ÿฐ ์‹์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ 'abc'์˜ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์ณ์„œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

- '๊ตฌ๋ถ„์ž'.join(๋ฆฌ์ŠคํŠธ)
'๊ตฌ๋ถ„์ž'.join(๋ฆฌ์ŠคํŠธ)๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’๊ณผ ๊ฐ’ ์‚ฌ์ด์— '๊ตฌ๋ถ„์ž'์— ๋“ค์–ด์˜จ ๊ตฌ๋ถ„์ž๋ฅผ ๋„ฃ์–ด์„œ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์ณ์ค๋‹ˆ๋‹ค.
'_'.join(['a', 'b', 'c']) ๋ผ ํ•˜๋ฉด "a_b_c" ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•ด ์ค๋‹ˆ๋‹ค.

 

 

 

2. itertools ์‚ฌ์šฉ๋ฒ•

 

from itertools import product 

 

์ค‘๋ณตํฌํ•จํ•œ ๋ชจ๋“  ์กฐํ•ฉ ์ƒ์„ฑ

BUT, ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์ •๋‹ต์ด ์•ˆ๋  ์ˆ˜๋„ ์žˆ๋‹ค

 

 

3. index์‚ฌ์šฉ๋ฒ•

 

my_list = [10, 20, 30, 40, 30]

# ์ฒซ ๋ฒˆ์งธ 30์˜ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ
print(my_list.index(30))  # ์ถœ๋ ฅ: 2

# ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•ด์„œ ๊ฒ€์ƒ‰
print(my_list.index(30, 3))  # ์ถœ๋ ฅ: 4 (3๋ฒˆ ์ธ๋ฑ์Šค ์ดํ›„ ๊ฒ€์ƒ‰)

 

 

 

my_string = "Hello, world!"

# "o"์˜ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ
print(my_string.index("o"))  # ์ถœ๋ ฅ: 4

# "world"์˜ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ
print(my_string.index("world"))  # ์ถœ๋ ฅ: 7

# ๊ฒ€์ƒ‰ ๋ฒ”์œ„ ์ œํ•œ
print(my_string.index("o", 5))  # ์ถœ๋ ฅ: 8 (5๋ฒˆ ์ธ๋ฑ์Šค ์ดํ›„ ๊ฒ€์ƒ‰)

 

๐Ÿ˜‰ ๋ฆฌ๋ทฐ