[BOJ][๐ŸŸก5][๋ฐฑ์ค€#01759] ์•”ํ˜ธ ๋งŒ๋“ค๊ธฐ

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #1759


๋ฌธ์ œ

๋ฐ”๋กœ ์–ด์ œ ์ตœ๋ฐฑ์ค€ ์กฐ๊ต๊ฐ€ ๋ฐฉ ์—ด์‡ ๋ฅผ ์ฃผ๋จธ๋‹ˆ์— ๋„ฃ์€ ์ฑ„ ๊นœ๋นกํ•˜๊ณ  ์„œ์šธ๋กœ ๊ฐ€ ๋ฒ„๋ฆฌ๋Š” ํ™ฉ๋‹นํ•œ ์ƒํ™ฉ์— ์ง๋ฉดํ•œ ์กฐ๊ต๋“ค์€, 702ํ˜ธ์— ์ƒˆ๋กœ์šด ๋ณด์•ˆ ์‹œ์Šคํ…œ์„ ์„ค์น˜ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ์ด ๋ณด์•ˆ ์‹œ์Šคํ…œ์€ ์—ด์‡ ๊ฐ€ ์•„๋‹Œ ์•”ํ˜ธ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ๋˜์–ด ์žˆ๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ์•”ํ˜ธ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ L๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋“ค๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ตœ์†Œ ํ•œ ๊ฐœ์˜ ๋ชจ์Œ(a, e, i, o, u)๊ณผ ์ตœ์†Œ ๋‘ ๊ฐœ์˜ ์ž์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ๋˜ํ•œ ์ •๋ ฌ๋œ ๋ฌธ์ž์—ด์„ ์„ ํ˜ธํ•˜๋Š” ์กฐ๊ต๋“ค์˜ ์„ฑํ–ฅ์œผ๋กœ ๋ฏธ๋ฃจ์–ด ๋ณด์•„ ์•”ํ˜ธ๋ฅผ ์ด๋ฃจ๋Š” ์•ŒํŒŒ๋ฒณ์ด ์•”ํ˜ธ์—์„œ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ๋ฐฐ์—ด๋˜์—ˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ถ”์ธก๋œ๋‹ค. ์ฆ‰, abc๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์•”ํ˜ธ์ด์ง€๋งŒ bac๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์ƒˆ ๋ณด์•ˆ ์‹œ์Šคํ…œ์—์„œ ์กฐ๊ต๋“ค์ด ์•”ํ˜ธ๋กœ ์‚ฌ์šฉํ–ˆ์„ ๋ฒ•ํ•œ ๋ฌธ์ž์˜ ์ข…๋ฅ˜๋Š” C๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด ์•ŒํŒŒ๋ฒณ์„ ์ž…์ˆ˜ํ•œ ๋ฏผ์‹, ์˜์‹ ํ˜•์ œ๋Š” ์กฐ๊ต๋“ค์˜ ๋ฐฉ์— ์นจํˆฌํ•˜๊ธฐ ์œ„ํ•ด ์•”ํ˜ธ๋ฅผ ์ถ”์ธกํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. C๊ฐœ์˜ ๋ฌธ์ž๋“ค์ด ๋ชจ๋‘ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€๋Šฅ์„ฑ ์žˆ๋Š” ์•”ํ˜ธ๋“ค์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋‘ ์ •์ˆ˜ L, C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (3 โ‰ค L โ‰ค Cย โ‰ค 15) ๋‹ค์Œ ์ค„์—๋Š” C๊ฐœ์˜ ๋ฌธ์ž๋“ค์ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž๋“ค์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์ด๋ฉฐ, ์ค‘๋ณต๋˜๋Š” ๊ฒƒ์€ ์—†๋‹ค.


์ถœ๋ ฅ

๊ฐ ์ค„์— ํ•˜๋‚˜์”ฉ, ์‚ฌ์ „์‹์œผ๋กœ ๊ฐ€๋Šฅ์„ฑ ์žˆ๋Š” ์•”ํ˜ธ๋ฅผ ๋ชจ๋‘ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ

์ž…๋ ฅ

4 6
a t c i s w


์ถœ๋ ฅ

acis
acit
aciw
acst
acsw
actw
aist
aisw
aitw
astw
cist
cisw
citw
istw


My Sol

def func(i, s, L, C):
    if i == L:
        global stack
        cnt = 0
        for ch in stack:
            if ch in 'aeiou':
                cnt += 1

        if (cnt>=1) and (L-cnt)>=2:
            print(''.join(stack))
        return

    if s == C:
        return

    for k in range(s, C):
        stack.append(chs[k])
        func(i+1, k+1, L, C)
        stack.pop()

L, C = map(int, input().split())
chs = sorted(list(input().split()))

stack = []
func(0, 0, L, C)

stack์„ ์‚ฌ์šฉํ•˜๋Š” ๋‚˜๋ฆ„ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€๋‹ค. ์•ŒํŒŒ๋ฒณ๋„ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ๋ถ€ํ„ฐ ์ •๋ ฌ์„ ํ•ด์ฃผ๊ณ , ์ด ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ์žฌ๊ท€์— ์žฌ๊ท€ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๋ฉฐ stack์— ๋„ฃ๊ณ  ํ˜ธ์ถœ ํ›„ ๋นผ์ค€๋‹ค. s๋ถ€ํ„ฐ C์˜ ๋ชจ๋“  k ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ๋„ฃ์–ด๋ณด๊ณ  ๋นผ๋ณด๋ฉฐ stack์— ์ฑ„์› ๋‹ค ๋บ๋‹ค ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋‹ค๋งŒ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๊ฐ„๊ณผํ•˜๊ณ  ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ชจ์Œ์ด 1๊ฐœ ์ด์ƒ, ์ž์Œ์ด 2๊ฐœ ์ด์ƒ์ด์–ด์•ผ ํ•˜๋ฏ€๋กœ, stack์—์„œ ๋ชจ์Œ์„ ์„ธ์–ด cnt์— ์ €์žฅํ•˜๊ณ , ์ด cnt๊ฐ€ 1์ด์ƒ์ด๊ณ , L-cnt ์ฆ‰, ๋ชจ์Œ์ด ์•„๋‹Œ ์ž์Œ์˜ ์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋งŒ stack์„ ๋ถ™์—ฌ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜์˜€๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

์กฐ๊ฑด์„ ์ œ๋Œ€๋กœ ๋ณด์ง€ ๋ชปํ•ด์„œ 1๋ฒˆ์„ ํ‹€๋ฆฌ๊ณ  ๋””๋ฒ„๊น…์šฉ์œผ๋กœ ๋„ฃ์€ print๋ฌธ์„ ์•ˆ ๋นผ์„œ 1๋ฒˆ ๋˜ ํ‹€๋ ธ๋‹ค. ์ด๋Ÿฐ ๊ฑฐ ์ž˜ ๋ด์•ผ ํ•œ๋‹ค. ์•„์‰ฝ๋‹คใ… ใ… 

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ