2021. 10. 7. 00:43ใ๐ฑ Algorithm
๐ ์ ๊ทผ
1. A, E, I, O, U ์ ์ค๋ณต์ ํ์ฉํ๋ฉฐ ๋ชจ๋ ๊ฒฝ์ฐ์ ์์ด(permutation)์ ๋ง๋ค์ด ๋ธ๋ค.
2. ๊ฐ ๋ชจ์์ ์กฐํฉ์ด 1๊ฐ์ง์ธ ๊ฒฝ์ฐ, 2๊ฐ์ง์ธ ๊ฒฝ์ฐ, ... 5๊ฐ์ง์ธ ๊ฒฝ์ฐ, ์ด๋ ๊ฒ ๊ฐ๊ฐ์ ๊ฒฝ์ฐ์ ๋ง๋ ๋ชจ๋ ์กฐํฉ์ ๋ง๋ค์ด์ผํ๋ค.
2 - 1. ์๋ฅผ ๋ค์ด ์กฐํฉ์ด 5๊ฐ์ง์ธ ๊ฒฝ์ฐ๋, AEIOU ๋ฟ๋ง์ด ์๋๋ผ (์ค๋ณต ํ์ฉํ๊ธฐ ๋๋ฌธ์) AAAAA, EEEEE ... UUUUU ๊ฐ์ ๊ฒฝ์ฐ๋ ์กด์ฌํ๋ค.
2 - 2. ๋๋ฌธ์ ๋จ์ permutation ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ค.
3. ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค(์ํ ).
๊ฒฐ๋ก : ์ฌ์ค์, A, E, I, O, U ๋ฅผ ์กฐํฉํ์ฌ, ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ซ ํผ์น ํ ์ํ .
โ permutation ์ผ๋ก ์ ๊ทผํ์ ๋ (์ค๋ต)
from itertools import product, chain
def solution(word):
basic = ["A", "E", 'I', "O", "U"]
word_set = basic[:]
for i in range(2, 6):
for j in permutations(basic, i):
word_set.append(''.join(j))
...
์ด ๊ณผ์ ์์ permutation ๊ณผ product์ ์ฐจ์ด๋ฅผ ๋๊ผ๋ค.
permutation ์ ๊ฐ ์์๋ฅผ ํ๋ฒ์ฉ ์กฐํฉํ๋ ๋ฐ๋ฉด <=> product ๋ ๊ฐ ์์๋ฅผ ์ฌ๋ฌ๋ฒ ์กฐํฉํ๋ค.
์ฆ product ๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋์ ๋ชจ์์ ์ค๋ณตํ์ฌ ์กฐํฉํ ์ ์๋ ๋ฐ๋ฉด, permutation ์ ํ๋์ ๋ชจ์์ ๋ํ ์ค๋ณต ์ฐ์ฐ์ ์ฒ๋ฆฌํ์ง ์๋๋ค.
๋๋ฌธ์ product ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ณ๋ค.
โ itertools.product() ์ฌ์ฉ
from itertools import product, chain
def solution(word):
basic = ["A", "E", 'I', "O", "U"]
word_set = basic[:]
for i in range(2, 6):
word_set += list(map(list, product(basic, repeat=i)))
result = sorted(list(map(lambda x: ''.join(x), word_set)))
return result.index(word) + 1
+ itertools.chain() ๋ฉ์๋ ์ฌ์ฉ
itertools ์ chain() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด iterableํ ๊ฐ์ฒด๋ค์ ์ธ์๋ก ๋ฐ์ ํ๋์ iterator๋ก ๋ฐํํ๋ค.
from itertools import product, chain
def solution(word):
basic = ["A", "E", 'I', "O", "U"]
word_set = basic[:]
for i in range(2, 6):
word_set = chain(word_set, list(map(list, product(basic, repeat=i))))
result = sorted(list(map(lambda x: ''.join(x), word_set)))
return result.index(word) + 1
'๐ฑ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 2002 ์ถ์ ํ์ด์ฌ (0) | 2023.03.01 |
---|---|
๋ฐฑ์ค 14225 ๋ถ๋ถ์์ด์ ํฉ ํ์ด์ฌ (0) | 2023.02.25 |
ํ๋ก๊ทธ๋๋จธ์ค [lv3] floodfill ํ์ด์ฌ (0) | 2021.09.01 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ์ฟผ๋์์ถ ํ ๊ฐ์ ์ธ๊ธฐ ํ์ด์ฌ (0) | 2021.08.31 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ฐฉ๋ฌธ๊ธธ์ด ํ์ด์ฌ (0) | 2021.08.29 |