๐Ÿ“š Algorithm/๐Ÿ’ช๐Ÿป Python ๋ฌธ์ œ ํ’€์ด

[Python - ๋ฐฑ์ค€ 2529] ๋ถ€๋“ฑํ˜ธ

yunakim2 2021. 4. 14. 18:01
๋ฐ˜์‘ํ˜•
 

2529๋ฒˆ: ๋ถ€๋“ฑํ˜ธ

๋‘ ์ข…๋ฅ˜์˜ ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ ‘<’์™€ ‘>’๊ฐ€ k๊ฐœ ๋‚˜์—ด๋œ ์ˆœ์„œ์—ด  A๊ฐ€ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ ์•ž๋’ค์— ์„œ๋กœ ๋‹ค๋ฅธ ํ•œ ์ž๋ฆฟ์ˆ˜ ์ˆซ์ž๋ฅผ ๋„ฃ์–ด์„œ ๋ชจ๋“  ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ œ

www.acmicpc.net

๋ฌธ์ œ ์„ค๋ช…

๋‘ ์ข…๋ฅ˜์˜ ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ ‘<’์™€ ‘>’๊ฐ€ k๊ฐœ ๋‚˜์—ด๋œ ์ˆœ์„œ์—ด  A๊ฐ€ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ ์•ž๋’ค์— ์„œ๋กœ ๋‹ค๋ฅธ ํ•œ ์ž๋ฆฟ์ˆ˜ ์ˆซ์ž๋ฅผ ๋„ฃ์–ด์„œ ๋ชจ๋“  ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ œ์‹œ๋œ ๋ถ€๋“ฑํ˜ธ ์ˆœ์„œ์—ด A๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•˜์ž. 

A =>  < < < > < < > < >

๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ ์•ž๋’ค์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋Š” 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ •์ˆ˜์ด๋ฉฐ ์„ ํƒ๋œ ์ˆซ์ž๋Š” ๋ชจ๋‘ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค. ์•„๋ž˜๋Š” ๋ถ€๋“ฑํ˜ธ ์ˆœ์„œ์—ด A๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋Š” ํ•œ ์˜ˆ์ด๋‹ค. 

3 < 4 < 5 < 6 > 1 < 2 < 8 > 7 < 9 > 0

์ด ์ƒํ™ฉ์—์„œ ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ๋ฅผ ์ œ๊ฑฐํ•œ ๋’ค, ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋ถ™์ด๋ฉด ํ•˜๋‚˜์˜ ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด ์ˆ˜๋ฅผ ์ฃผ์–ด์ง„ ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋Š” ์ •์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ฃผ์–ด์ง„ ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ •์ˆ˜๋Š” ํ•˜๋‚˜ ์ด์ƒ ์กด์žฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 3456128790 ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 5689023174๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„ A๋ฅผ ๋งŒ์กฑ์‹œํ‚จ๋‹ค. 

5 < 6 < 8 < 9 > 0 < 2 < 3 > 1 < 7 > 4

์—ฌ๋Ÿฌ๋ถ„์€ ์ œ์‹œ๋œ k๊ฐœ์˜ ๋ถ€๋“ฑํ˜ธ ์ˆœ์„œ๋ฅผ ๋งŒ์กฑํ•˜๋Š” (k+1)์ž๋ฆฌ์˜ ์ •์ˆ˜ ์ค‘์—์„œ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ์•ž์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ๊ฐ ๋ถ€๋“ฑํ˜ธ์˜ ์•ž๋’ค์— ๋“ค์–ด๊ฐ€๋Š” ์ˆซ์ž๋Š” { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }์ค‘์—์„œ ์„ ํƒํ•ด์•ผ ํ•˜๋ฉฐ ์„ ํƒ๋œ ์ˆซ์ž๋Š” ๋ชจ๋‘ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค

์ž…๋ ฅํ˜•์‹

์ฒซ ์ค„์— ๋ถ€๋“ฑํ˜ธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ k๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” k๊ฐœ์˜ ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ๊ฐ€ ํ•˜๋‚˜์˜ ๊ณต๋ฐฑ์„ ๋‘๊ณ  ํ•œ ์ค„์— ๋ชจ๋‘ ์ œ์‹œ๋œ๋‹ค. k์˜ ๋ฒ”์œ„๋Š” 2 ≤ k ≤ 9 ์ด๋‹ค. 

์ถœ๋ ฅํ˜•์‹

์—ฌ๋Ÿฌ๋ถ„์€ ์ œ์‹œ๋œ ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑํ•˜๋Š” k+1 ์ž๋ฆฌ์˜ ์ตœ๋Œ€, ์ตœ์†Œ ์ •์ˆ˜๋ฅผ ์ฒซ์งธ ์ค„๊ณผ ๋‘˜์งธ ์ค„์— ๊ฐ๊ฐ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ ์•„๋ž˜ ์˜ˆ(1)๊ณผ ๊ฐ™์ด ์ฒซ ์ž๋ฆฌ๊ฐ€ 0์ธ ๊ฒฝ์šฐ๋„ ์ •์ˆ˜์— ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋ชจ๋“  ์ž…๋ ฅ์— ๋‹ต์€ ํ•ญ์ƒ ์กด์žฌํ•˜๋ฉฐ ์ถœ๋ ฅ ์ •์ˆ˜๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์ด ๋˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค. 

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

ํ’€์ด ๊ณผ์ •

๋ถ€๋“ฑํ˜ธ ๊ฐฏ์ˆ˜๋ฅผ n๊ฐœ๋ผ๊ณ  ํ•  ๋•Œ, 0~9 ์—์„œ n+1๋งŒํผ ์ˆซ์ž๋ฅผ ๊ณ ๋ฅด๋Š” ๋ฌธ์ œ์˜€๋‹ค. visited๋ฅผ ์ด์šฉํ•˜์—ฌ '000'๊ฐ™์€ ์ค‘๋ณต์„ ํ”ผํ–ˆ๊ณ , possible ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ถ€๋“ฑํ˜ธ๊ฐ€ ์˜ณ์„ ๋•Œ๋งŒ ๋‹ค์Œ backtracking์„ ์‹คํ–‰ํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ž„์‹œ ๋ฆฌ์ŠคํŠธ์— ์„ ํƒ๋œ ์ˆซ์ž๋ฅผ ๋„ฃ์€ ๋‹ค์Œ์— ๋ถ€๋“ฑํ˜ธ๋ฅผ ํŒ๋ณ„ํ•˜์—ฌ min๊ฐ’๊ณผ max๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š” ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๋˜ํ•œ 021๊ฐ™์€ ๊ฒฝ์šฐ๋Š” 21์ด์•„๋‹ˆ๋ผ 021๋กœ ์ถœ๋ ฅํ•ด์ค˜์•ผํ•˜๋ฏ€๋กœ ์„ ํƒ๋œ ๊ฐ’๋“ค์„ int๋กœ ํ•˜๋Š”๊ฒƒ๋ณด๋‹ค string์œผ๋กœ ๋ฐ”๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ–ˆ๋‹ค.

+) min๊ฐ’๊ณผ max๊ฐ’์„ ๊ตฌํ•  ๋•Œ๋Š” ์–ด์งœํ”ผ ๋ธŒ๋ฃจํŠธํฌ์Šค๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์กฐํ•ฉ์„ ๊ตฌํ•˜๊ธฐ๋•Œ๋ฌธ์— min_value๊ฐ’์€ ๋งจ์ฒ˜์Œ ํ†ต๊ณผํ•œ ๊ฐ’์œผ๋กœ, max_value๋Š” ๊ณ„์† ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด์„œ ๊ตฌํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค : )


def possible(item1, item2, symbol):
    if symbol == '<':
        return item1 < item2
    if symbol == '>':
        return item1 > item2


def backtracking(idx, string):
    global min_value
    global visited
    global max_value
    if idx == n + 1:
        if not len(min_value):
            min_value = string
        else:
            max_value = string
        return
    for i in range(10):
        if visited[i]:
            continue
        if idx == 0 or possible(string[-1], str(i), stack[idx - 1]):
            visited[i] = True
            backtracking(idx + 1, string + str(i))
            visited[i] = False


if __name__ == '__main__':
    n = int(input())
    stack = list(input().split())
    max_value = ''
    min_value = ''
    visited = [False] * 10
    backtracking(0, '')
    print(max_value)
    print(min_value)

 

 

 

๋ฐ˜์‘ํ˜•