-
[Python] ๋ฐฑ์ค 16719 ZOAC (๊ตฌํ)๐ป Algorithm/Python 2022. 7. 8. 23:30
๐ ๋ฌธ์
2018๋ 12์, ์ฒ์ ์์ํ๊ฒ ๋ ZOAC์ ์คํ๋์ ๋งก์ ์ฑ์ฐ๋ ๋๊ตฌ๋ณด๋ค ํ๋ คํ๊ฒ ZOAC๋ฅผ ์๋ฆฌ๋ ค ํ๋ค.
์ ๊ธ์๋ถํฐ ํ๋์ฉ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ๋๋ฌด ์์ํ๋ค๊ณ ์๊ฐํ ์ฑ์ฐ๋ ๋ฌธ์์ด์ ๋ณด์ฌ์ฃผ๋ ์๋ก์ด ๊ท์น์ ๊ณ ์ํด๋๋ค!
๊ท์น์ ์ด๋ฌํ๋ค. ์์ง ๋ณด์ฌ์ฃผ์ง ์์ ๋ฌธ์ ์ค ์ถ๊ฐํ์ ๋์ ๋ฌธ์์ด์ด ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์์ ์ค๋๋ก ํ๋ ๋ฌธ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด ZOAC๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์ถ๋ค๋ฉด, A → AC → OAC → ZOAC ์์ผ๋ก ๋ณด์ฌ์ฃผ๋ฉด ๋๋ค.
๋ฐ์ ์ฑ์ฐ๋ฅผ ์ํ์ฌ ์ด ๊ท์น๋๋ก ์ถ๋ ฅํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์ํ๋ฒณ ๋๋ฌธ์๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์ ๊ธธ์ด๋ ์ต๋ 100์์ด๋ค.
์ถ๋ ฅ
๊ท์น์ ๋ง๊ฒ ์์๋๋ก ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
ZOAC
์์ ์ถ๋ ฅ 1
A AC OAC ZOAC
์์ ์ ๋ ฅ 2
BAC
์์ ์ถ๋ ฅ 2
A AC BAC
์์ ์ ๋ ฅ 3
STARTLINK
์์ ์ถ๋ ฅ 3
A AI AIK AINK ALINK ARLINK ARTLINK SARTLINK STARTLINK
๐ ํ์ด
๐ฌ Code
import sys input = sys.stdin.readline n = list(input().rstrip()) # STEPBACK # ์ ๋ ฅ์ด ํ ๊ธ์๋ฉด ๊ทธ๋ฅ ๊ทธ๋๋ก ์ถ๋ ฅํด์ฃผ๊ณ ์ข ๋ฃ if len(n) == 1: print(n[0]) sys.exit(0) dic = [] for i in range(len(n)): dic.append((n[i], i)) dic = sorted(dic) # ABCEKPST ans = [0 for _ in range(len(n))] ans[dic[0][1]] = dic[0][0] while dic: print(''.join([k for k in ans if k])) i = 1 idx = 0 isStart = 1 while i < len(dic): add = ans.copy() add[dic[i][1]] = dic[i][0] if isStart: minimum = add isStart = 0 elif ''.join([k for k in add if k]) < ''.join([k for k in minimum if k]): minimum = add idx = i i += 1 ans = minimum del dic[idx]
๐ก Solution
๋ณธ๋ ๋ฌธ์์ด์ ์์๋ฅผ ์ ์งํ ์ฑ ์ถ๋ ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ๊ธฐ์ตํ๊ธฐ ์ํด (๋ฌธ์, ์ธ๋ฑ์ค)์์ด ๋ด๊ธด ๋ฆฌ์คํธ dic์ ์์ฑํ์ต๋๋ค.
- ans: ์ถ๋ ฅํ ๋ฌธ์๊ฐ ๋ด๊ธด ๋ฆฌ์คํธ
- add: ans์ ํ ๋ฌธ์์ฉ ์ถ๊ฐํด๋ณธ ๋ฆฌ์คํธ
- minimum: ans์ ํ ๋ฌธ์์ฉ ์ถ๊ฐํด๋ณด๋ฉด์ ์ป์ '๊ฐ์ฅ ์์ ๋ฌธ์์ด'์ด ๋ด๊ธด ๋ฆฌ์คํธ
- i: ํ ๋ฌธ์์ฉ ์ถ๊ฐํ ๋ i๋ฒ์งธ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ
- idx: '๊ฐ์ฅ ์์ ๋ฌธ์์ด'์ ๋ง๋ ๋ฌธ์๋ฅผ ๊ฐ๋ฆฌํค๋ ์ธ๋ฑ์ค
- isStart: minimum์ ๊ณ์ ๋น๊ต๋ฅผ ํตํด์ ์ ๋ฐ์ดํธํด์ค์ผ ํ๋๋ฐ, ์ด๋ฒ์ด ์ฒซ ๋ฐ๋ณต๋ฌธ์ด๋ผ ์์ง ๋น๊ต ๋์์ด ์์ ๋๋ฅผ ๋ํ๋ด๋ Flag
BACK์ด๋ผ๋ ์ ๋ ฅ์ด ๋ค์ด์๋ค๊ณ ํด ๋ณด๋ฉด.
while๋ฌธ(dic์ ์์๊ฐ ์๋ ๋์ ๊ณ์ ๋ฐ๋ณต)
1๋ฒ์งธ while๋ฌธ
- A ์ถ๋ ฅ
- BA, AC, AK ์ค ๊ฐ์ฅ ์์ ๋ฌธ์์ด์ธ AC ์ ์ฅ
- ์ด ๋ฌธ์์ด์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ C๋ฅผ dic์์ ์ญ์
2๋ฒ์งธ while๋ฌธ
- AC ์ถ๋ ฅ
- BAC, ACK ์ค ๊ฐ์ฅ ์์ ๋ฌธ์์ด์ธ ACK ์ ์ฅ
- ์ด ๋ฌธ์์ด์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ K๋ฅผ dic์์ ์ญ์
3๋ฒ์งธ while๋ฌธ
- ACK ์ถ๋ ฅ
- BACK ์ค ๊ฐ์ฅ ์์ ๋ฌธ์์ด์ธ BACK ์ ์ฅ
- ์ด ๋ฌธ์์ด์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ B๋ฅผ dic์์ ์ญ์
4๋ฒ์งธ while๋ฌธ
- BACK ์ถ๋ ฅ
- dic์ ๋จ์์๋ A ์ญ์
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 13022 ๋๋์ ์ฌ๋ฐ๋ฅธ ๋จ์ด (String) (0) 2022.07.08 [Python] ๋ฐฑ์ค 7576 ํ ๋งํ (BFS) (0) 2022.07.08 [Python] ๋ฐฑ์ค 1541 ์์ด๋ฒ๋ฆฐ ๊ดํธ (Greedy) (0) 2022.07.08 [Python] ๋ฐฑ์ค 1012 ์ ๊ธฐ๋ ๋ฐฐ์ถ (BFS) (0) 2022.07.08 [Python] ๋ฐฑ์ค 16206 ๋กค์ผ์ดํฌ (Greedy) (0) 2022.07.08