๐น ZOAC
1. ๋ฌธ์ ๋งํฌ
2. ์ฝ๋
Python3
31256KB
40ms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# ์ฒ์ ์
๋ ฅ๋ฐ๋ ๋จ์ด ๋ฆฌ์คํธ
start_word = list(input())
# ์ถ๋ ฅ์ ์ํ ๋จ์ด ๋ฆฌ์คํธ(๋น์นธ์์ ์ฑ์๋๊ฐ๊ธฐ)
final_word = [' '] * len(start_word)
# ์ฒ์ ์
๋ ฅ๋ฐ์ [๋จ์ด, ์์น] ๋ฆฌ์คํธ
word = [[start_word[i], i] for i in range(len(start_word))]
# ์ฌ๊ท๋ฅผ ์ฌ์ฉํ ๋จ์ด ์ถ๋ ฅ
def print_word(word):
# ๋น๋ฐฐ์ด์ผ ๋ ์ข
๋ฃ
if not word:
return
# ๋จ์ด ๋ฐฐ์ด ์ํ๋ฒณ ์์ผ๋ก ์ ๋ ฌ
sorted_word = sorted(word, key=lambda x:x[0])
# ์ํ๋ฒณ ์ค ๊ฐ์ฅ ์ฌ์ ์์ผ๋ก ๋น ๋ฅธ ์ํ๋ฒณ ์ฒ์ ์์น
now_idx = sorted_word[0][1]
# ์ถ๋ ฅ์ ์ํ ์ํ๋ฒณ ์ฑ์๋ฃ๊ธฐ
final_word[now_idx] = start_word[now_idx] # ' ' -> ์ํ๋ฒณ
# ์ฌ์ฉํ ์ํ๋ฒณ ๋จ์ด ๋ฆฌ์คํธ์์ ์ญ์
start_word[now_idx] = ''
# ์ฑ์๋ฃ์ ์ํ๋ฒณ ํฉ์ณ์ ์ถ๋ ฅ (๋น์นธ์ ์์ ๊ณ ์ถ๋ ฅ)
print(''.join(final_word).replace(' ', ''))
# ์ฌ์ฉํ ์ํ๋ฒณ ๋ถ๋ถ ๋ฐฐ์ด word์์์ ์ธ๋ฑ์ค ์ฐพ๊ธฐ
for i in range(len(word)):
if word[i][1] == now_idx:
word_idx = i
# ํด๋น ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ข์ฐ๋ก ๋๋๊ธฐ
print_word(word[word_idx+1:]) # ์ค๋ฅธ์ชฝ ๋จผ์ ํ์
print_word(word[:word_idx]) # ์ผ์ชฝ ๋์ค์ ํ์
print_word(word)
3. ํด์ค
์ฌ๊ท๋ฅผ ์ด์ฉํ์ฌ word ๋ฐฐ์ด์ ๋ถํ ํ์ฌ ํด๊ฒฐํ๋ค.
word ๋ฐฐ์ด ์์ : [[โZโ, 0], [โOโ, 1], [โAโ, 2], [โCโ, 3]]
word๋ฅผ ์ํ๋ฒณ ์์๋ก ์ ๋ ฌํ๊ณ ๊ฐ์ฅ ์ ์์์ธ ์ํ๋ฒณ์ ์์น(word[0][1])์ now_idx์ ์ ์ฅํ๋ค.
ํด๋น ์ํ๋ฒณ์ ์ถ๋ ฅ ๋ฆฌ์คํธ(final_word)์ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๊ณ ์ฒซ ๋จ์ด ๋ฆฌ์คํธ(start_word)์์๋ ์ ๊ฑฐํด์ค๋ค.
๊ทธ ํ ํด๋น ์ํ๋ฒณ์ Pivot์ผ๋ก ๋ ํ ๋ฐฐ์ด์ ์ข์ฐ๋ก ๋๋์ด ์ฌ๊ท๋ก ์์ ๋จ๊ณ๋ค์ ๋ค์ ์งํํ๋ค. ์ด๋ ์ค๋ฅธ์ชฝ ๋ฐฐ์ด๋ถํฐ ํ์ํด์ค๋ค.(๋จ์ด๊ฐ ์ฌ์ ์์ด๋ ค๋ฉด ์ค๋ฅธ์ชฝ๋ถํฐ ์ฐพ์์ฃผ์ด์ผํ๋ค.)
๋ฐฐ์ด์ ์๊ฒ ์๋ฅด๋ค๊ฐ ๋น๋ฐฐ์ด์ด ๋๋ฉด ์ฌ๊ท์์ ๋น ์ ธ๋์จ๋ค.
- ๋ฐ๋ก
1 2 3 4 5 6 7 8 9 10 11 12 13
ABAB # Output A AA ABA ABAB # Answer A AA AAB ABAB
This post is licensed under CC BY 4.0 by the author.