-
[๋ฐฑ์ค] 6443 ์ ๋๊ทธ๋จ with PythonPS 2022. 3. 2. 23:42728x90๋ฐ์ํ
๐ BOJ 6443 ์ ๋๊ทธ๋จ
๐ก ์กฐ๊ฑด
์ฒซ์งธ ์ค์ ๋จ์ด์ ๊ฐ์ N ์ด, ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์๋จ์ด๊ฐ ๋ค์ด์จ๋ค.
์๋จ์ด๋ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๋จ์ด์ ๊ธธ์ด๋ 20๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๊ณ , ์ ๋๊ทธ๋จ์ ์๊ฐ 100,000๊ฐ ์ดํ์ธ ๋จ์ด๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
์ ๋๊ทธ๋จ ํ๋ก๊ทธ๋จ์ด๋, ์ ๋ ฅ๋ฐ์ ์๋จ์ด์ ์ฒ ์๋ค๋ก ๋ง๋ค ์ ์๋ ๋ชจ๋ ๋จ์ด๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
์ ๋ ฅ๋ฐ์ ๋จ์ด๋ด์ ๋ช๋ช ์ฒ ์๊ฐ ์ค๋ณต๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ ๊ฐ์ ๋จ์ด๊ฐ ์ฌ๋ฌ ๋ฒ ๋ง๋ค์ด ์ง ์ ์๋๋ฐ,
ํ ๋ฒ๋ง ์ถ๋ ฅํด์ผ ํ๋ค. ๋ํ ์ถ๋ ฅํ ๋์ ์ํ๋ฒณ ์์๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
๋ฐฑํธ๋ํน ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin def solve(l, s): if l == 0: visited.add(s) return for i in range(26): if alpha[i] >= 1: alpha[i] -= 1 solve(l - 1, s + chr(i + 97)) alpha[i] += 1 for _ in range(int(stdin.readline())): visited = set() alpha = [0 for _ in range(26)] string = stdin.readline().rstrip() for i in string: alpha[ord(i)-97] += 1 solve(len(string), '') for s in sorted(list(visited)): print(s)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
2 abc acba
์คํ๊ฒฐ๊ณผ
abc acb bac bca cab cba aabc aacb abac abca acab acba baac baca bcaa caab caba cbaa
โจ๏ธ ๋ฌธ์ ํ์ด
string ์ด๋ผ๋ ๋ณ์์ ๋ฌธ์์ด์, ๊ฐ ์ํ๋ฒณ์ด ๋ช ๊ฐ ๋์๋์ง ๊ฐ์๋ฅผ ์ ์ฅํ alpha ๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ ๋ค
์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ์ํํ๋ฉด์ arr์ ๊ฐ ์ํ๋ฒณ์ ๊ฐ์๋ฅผ ๊ธฐ๋กํด์ค๋ค.
solve() ํจ์์ string์ ๊ธธ์ด์ ๋น ๋ฌธ์์ด์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ๊ณ ์คํํฉ๋๋ค.
solve() ํจ์์์ alpha ๋ฐฐ์ด์ ๊ฐ์ด 0๋ณด๋ค ํด ๋ ๋งค๊ฐ๋ณ์๋ก ๋ฌธ์์ด์ ์ํ๋ฒณ์ ๋ถ์ด๊ณ ๋งค๊ฐ๋ณ์๋ก ๋ฃ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ -1 ํด์ค๋ค.๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 0์ด ๋์์ ๋, visited ์ ๋ฃ์ด์ค๋๋ค.
visited ๋ฅผ ๋ฆฌ์คํธ๋ก ๋ณํํ๊ณ , ์ ๋ ฌํ ๋ค, ์์๋๋ก ์ถ๋ ฅํ๋ค.
๐พ ๋๋์
- ๊ณจ๋๋ฌธ์ ์น๊ณ ์๊ฐ์ด๊ณผ๊ฐ ๋์ง ์๋ ์ฌ์ด ๋ฌธ์ ์์ต๋๋ค.
- ์ฌ๊ทํจ์๋ฅผ ํตํด์ ๋ฐฑํธ๋ํน์ผ๋ก ๊ฐ๋จํ ํ ์ ์๋ ๋ฌธ์ ์์ต๋๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 9742 ์์ด with Python (0) 2022.03.03 [๋ฐฑ์ค] 8394 ์ ์ with Python (0) 2022.03.02 [๋ฐฑ์ค] 2697 ๋ค์์ ๊ตฌํ๊ธฐ with Python (0) 2022.03.01 [๋ฐฑ์ค] 1855 ์ํธ with Python (0) 2022.03.01 [๋ฐฑ์ค] 1342 ํ์ด์ ๋ฌธ์์ด with Python (0) 2022.03.01