โ๏ธ ๋ฌธ์
[๋ฐฑ์ค/BOJ] 13417๋ฒ: ์นด๋ ๋ฌธ์์ด(https://www.acmicpc.net/problem/13417)
N์ฅ์ ์นด๋๊ฐ ์ผ๋ ฌ๋ก ๋์ฌ์๋ค. ๊ฐ ์นด๋์๋ ์ํ๋ฒณ์ด ํ๋์ฉ ์ ํ์๋ค. ํ์ฑ์ด๋ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์นด๋๋ถํฐ ์ฐจ๋ก๋๋ก ํ ์ฅ์ฉ ๊ฐ์ ธ์ฌ ์ ์๋ค. ๊ฐ์ฅ ์ฒ์์ ๊ฐ์ ธ์จ ์นด๋๋ ์์ ์ ์์ ๋๋๋ค. ๊ทธ๋ค์๋ถํฐ๋ ๊ฐ์ ธ์จ ์นด๋๋ฅผ ์์ ์ ์์ ๋์ธ ์นด๋๋ค์ ๊ฐ์ฅ ์ผ์ชฝ, ๋๋ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ๋๋๋ค. ํ์ฑ์ด๋ ๋ชจ๋ ์นด๋๋ฅผ ๋ค ๊ฐ์ ธ์จ ํ์ ์์ ์ ์์ ๋์ธ ์นด๋๋ฅผ ์์๋๋ก ์ด์ด ๋ถ์ฌ ์นด๋ ๋ฌธ์์ด์ ๋ง๋ค๋ ค๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด 3์ฅ์ ์นด๋๊ฐ [M, K, U] ์์ผ๋ก ๋์ฌ์๋ค๊ณ ํ์. ํ์ฑ์ด๋ ๋จผ์ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ “M”์ด ์ ํ ์นด๋๋ฅผ ๊ฐ์ ธ์์ ์์ ์ ์์ ๋๋๋ค. ๋ค์์ผ๋ก ๋จ์ ์นด๋ ์ค ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ “K”๊ฐ ์ ํ ์นด๋๋ฅผ ๊ฐ์ ธ์์ ๊ฐ์ฅ ์ผ์ชฝ์ ๋๊ณ , ์ด์ด์ “U”๊ฐ ์ ํ ์นด๋๋ฅผ ๊ฐ์ ธ์์ ๋ค์ ๊ฐ์ฅ ์ผ์ชฝ์ ๋๋ฉด “UKM”์ด๋ผ๋ ๋ฌธ์์ด์ ๋ง๋ค ์ ์๋ค. ๋ง์ฝ “K”๊ฐ ์ ํ ์นด๋๋ฅผ ๊ฐ์ ธ์์ ๊ฐ์ฅ ์ผ์ชฝ์ ๋๊ณ , ์ด์ด์ “U”๊ฐ ์ ํ ์นด๋๋ฅผ ๊ฐ์ ธ์์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ๋๋ฉด “KMU”๋ผ๋ ๋ฌธ์์ด์ ๋ง๋ค ์ ์๋ค. ์ด๋, ํ์ฑ์ด๊ฐ ๋ง๋ค ์ ์๋ ๋ฌธ์์ด ์ค ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅธ ๋ฌธ์์ด์ “KMU”์ด๋ค.
N์ฅ์ ์นด๋์ ์ ํ์๋ ์ํ๋ฒณ์ ์ฒ์ ์์๊ฐ ์ฃผ์ด์ง ๋, ํ์ฑ์ด๊ฐ ๋ง๋ค ์ ์๋ ์นด๋ ๋ฌธ์์ด ์ค ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅธ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ค ์ ์ถ๋ ฅ ์์
๐ง ๋์ด๋/์์ ์๊ฐ
โ ๋์ด๋: solved.ac ๊ธฐ์ค S3
โ ์์ ์๊ฐ: 38๋ถ
โ ๊ถ์ฅ ์๊ฐ: 1์๊ฐ 15๋ถ
๐ก ํ์ด
1) ๋ฌธ์ ์ ํ ํ์
๋ฌธ์ , ์ ์ถ๋ ฅ ์์๋ฅผ ๋ดค์ ๋ ๋ฌธ์์ด ์ฒ๋ฆฌ ์ ํ์ด๊ฒ ๊ตฌ๋ ์ถ์๊ณ '๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์นด๋๋ถํฐ ์ฐจ๋ก๋๋ก ํ ์ฅ์ฉ ๊ฐ์ ธ์ฌ ์ ์๋ค'๋ ๋ถ๋ถ์์ ๋ฑ์ ์จ๋จน์ ์ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
2) ์์ด๋์ด ํ๋ฆ
โ ์ ๋ ฌ?
์ฌ์ค ๋ฐ๋ก ๋ฑ์ ๋ ์ฌ๋ ธ๋ ๊ฑด ์๋๋ค. ์ฒ์์๋ ๋ฌธ์ ์ฅ ๋ณด๊ณ '์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅธ ๋ฌธ์์ด'์ ๊ฝํ์ ์ ๋ ฅ ๋ฐ์ ์ํ๋ฒณ ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ ํ ๋ค ๋ถ์ฌ์ ์ถ๋ ฅํ๋ฉด ๋์ง ์๋? ๋ผ๊ณ ์๊ฐํ๋ค.
๊ทผ๋ฐ ASDFG๊ฐ ๋์์ผ ํ๋ ์์๋ ๋ต์ด ๋ฌ๋ผ์ ๋ฌธ์ ๋ฅผ ๋ค์ ๋ณด๊ฒ ๋๊ณ '๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์นด๋๋ถํฐ ์ฐจ๋ก๋๋ก ํ ์ฅ์ฉ ๊ฐ์ ธ์ฌ ์ ์๋ค'๋ ์กฐ๊ฑด์ ๊ฐ๊ณผํ ๊ฑธ ๊นจ๋ฌ์๋ค.
์ํ๋ฒณ ๋ฆฌ์คํธ๋ฅผ cards๋ผ๊ณ ํ ๋, ์ฒ์ ๊ณ ๋ฅด๋ ์นด๋๋ ๋ฌด์กฐ๊ฑด cards[0]์ด๋ค.
โก โญ ๋ฑ ํ์ฉํ๊ธฐ โญ
์ด ๋ฌธ์ ์์ ๋ฑ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ํต์ฌ์ '์ด ์ํ๋ฒณ์ ๋ฑ์์ ๋นผ์ฃผ๋ ๊ฒ'์ด๊ณ popleft()๋ฅผ ์ด์ฉํด ์ด ๋ถ๋ถ์ ๊ตฌํํ ์ ์๋ค.
๋จผ์ ์ฒ์ ๊ณ ๋ฅด๋ ์นด๋๋ ๋ฌด์กฐ๊ฑด cards[0]์ด๋ผ๊ณ ํ๊ธฐ ๋๋ฌธ์ ์นด๋ ๋ฆฌ์คํธ์์ cards.popleft()๋ก ์ฒซ ์นด๋๋ฅผ ๋นผ์ฃผ๊ณ ์์ํ๋ค.
๋จ์ ์๋ ์นด๋ ๋ฆฌ์คํธ๊ฐ ์์ ํ ๋น ๋๊น์ง while๋ฌธ์ ๋๋๋ฐ ์ด ๋ ๋ฑ์ ์ฒซ ์ํ๋ฒณ๊ณผ word์ ์ฒซ ์ํ๋ฒณ์ ๋น๊ตํ์ฌ ๋ฑ์ ์๋ ์ํ๋ฒณ์ ์ ์ ํ ์์น์ ๋ถ์ฌ์ค๋ค. ๋ฑ์ ์ฒซ ์ํ๋ฒณ์ด word์ ์ฒซ ์ํ๋ฒณ๋ณด๋ค ์์๋ฉด word์ ์ผ์ชฝ์ ๋ฑ์ ์ฒซ ์ํ๋ฒณ์ ์ถ๊ฐํ๊ณ ๋ฐ๋์ ๊ฒฝ์ฐ word์ ์ค๋ฅธ์ชฝ์ ๋ฑ์ ์ฒซ ์ํ๋ฒณ์ ์ถ๊ฐํ๋ค.
์ฌ์ฉํ ์ํ๋ฒณ์ popleft()๋ฅผ ์ด์ฉํด ์นด๋ ๋ฆฌ์คํธ์์ ๋ฐ๋ก ๋นผ์ค๋ค.
B A C A B A C
์ด ์์ ๋ฅผ ์ด์ฉํด ์์ ๊ณผ์ ์ ํ์ธํด๋ณด์๋ฉด ์๋์ ๊ฐ๋ค.
์์ ์นด๋: cards.popleft() = B
ํ์ฌ ๋จ์ด: B
๋๋จธ์ง ์นด๋: A C A B A C
โ
๋ฑ์ ์ฒซ ์ํ๋ฒณ: cards[0] = A
word์ ์ฒซ ์ํ๋ฒณ: B
ํ์ฌ ๋จ์ด: AB (A๊ฐ B๋ณด๋ค ์์๊ธฐ ๋๋ฌธ์ ํ์ฌ ๋จ์ด์ ์ผ์ชฝ์ ์ถ๊ฐ)
๋๋จธ์ง ์นด๋: C A B A C
โ
๋ฑ์ ์ฒซ ์ํ๋ฒณ: cards[0] = C
word์ ์ฒซ ์ํ๋ฒณ: A
ํ์ฌ ๋จ์ด: ABC(C๊ฐ A๋ณด๋ค ๋ท ์์๊ธฐ ๋๋ฌธ์ ํ์ฌ ๋จ์ด์ ์ค๋ฅธ์ชฝ์ ์ถ๊ฐ)
๋ฑ์ด ๋น ๋๊น์ง ์ ๊ณผ์ ๋ฐ๋ณต!
3) ๊ตฌํ
from collections import deque
T = int(input())
for _ in range(T):
N = int(input())
cards = deque(list((input().split())))
current_char = cards.popleft()
word = current_char
while cards:
if cards[0] <= word[0]:
word = cards[0]+word
else:
word += cards[0]
cards.popleft()
print(word)
4) ์ด๋ ค์ ๋ ์ /๋ฐฐ์ด ์
๐จ ์ด๋ ค์ ๋ ์
- ์ด๋ ค์ ๋ ์ ์ ์์ง๋ง ๋ฌธ์ ์ข ์ฒ์ฒํ/๊ผผ๊ผผํ ์ฝ๋ ์ต๊ด์ ์ฅ์ฐฉํ์ ์ ๋ฐ โญ
โ ๋ฐฐ์ด ์
- ๋ฌธ์์ด๋ ๋ถ๋ฑํธ๋ก ๋น๊ต ๊ฐ๋ฅํจ → a < b์ด๋ฉด a๊ฐ b๋ณด๋ค ์ฌ์ ์์ผ๋ก ์์ ๋ค๋ ๋ป
'Problem Solving > [ํญํด99] TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
99ํด๋ฝ ์ฝํ ์คํฐ๋ 17์ผ์ฐจ TIL / ๊ทธ๋ฆฌ๋ (1) | 2024.11.13 |
---|---|
99ํด๋ฝ ์ฝํ ์คํฐ๋ 16์ผ์ฐจ TIL / ๊ทธ๋ฆฌ๋ (5) | 2024.11.12 |
99ํด๋ฝ ์ฝํ ์คํฐ๋ 14์ผ์ฐจ TIL / ๊ทธ๋ฆฌ๋ (0) | 2024.11.10 |
99ํด๋ฝ ์ฝํ ์คํฐ๋ 13์ผ์ฐจ TIL / ๊ทธ๋ฆฌ๋ (1) | 2024.11.09 |
99ํด๋ฝ ์ฝํ ์คํฐ๋ 12์ผ์ฐจ TIL / BFS(๋๋น ์ฐ์ ํ์) (0) | 2024.11.08 |