Problem Solving/[ํ•ญํ•ด99] TIL

99ํด๋Ÿฝ ์ฝ”ํ…Œ ์Šคํ„ฐ๋”” 15์ผ์ฐจ TIL / ์ž๋ฃŒ๊ตฌ์กฐ(๋ฑ)&๋ฌธ์ž์—ด

geum 2024. 11. 11. 16:57

โœ๏ธ ๋ฌธ์ œ

[๋ฐฑ์ค€/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๋ณด๋‹ค ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์„ ๋‹ค๋Š” ๋œป