ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

1107๋ฒˆ: ๋ฆฌ๋ชจ์ปจ

์ฒซ์งธ ์ค„์— ์ˆ˜๋นˆ์ด๊ฐ€ ์ด๋™ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ฑ„๋„ N (0 โ‰ค N โ‰ค 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.  ๋‘˜์งธ ์ค„์—๋Š” ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ์˜ ๊ฐœ์ˆ˜ M (0 โ‰ค M โ‰ค 10)์ด ์ฃผ์–ด์ง„๋‹ค. ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์…‹์งธ ์ค„์—๋Š” ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์ฑ„๋„ N์œผ๋กœ ์ด๋™ํ•˜๊ณ ์ž ํ•  ๋•Œ, M๊ฐœ์˜ ๋ฒ„ํŠผ์ด ๊ณ ์žฅ ๋‚˜์„œ ๊ณ ์žฅ ๋‚œ ๋ฒ„ํŠผ์„ ์ œ์™ธํ•˜๊ณ  +, -๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์ฑ„๋„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ๋กœ ๋ฆฌ๋ชจ์ปจ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. DFS๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋”๋ผ๋„, python3์˜ recursive depth๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ DFS๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.

 

  • ๊ณ ์žฅ ๋‚œ๊ณ ์žฅ ๋‚œ ๋ฒ„ํŠผ์ด ์—†๋Š” ๊ฒฝ์šฐ
    • ์ฑ„๋„ 100๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ abs(100 - ์ด๋™ํ•˜๊ณ ์ž ํ•˜๋Š” ์ฑ„๋„)๊ณผ ํ•ด๋‹น ์ฑ„๋„์˜ ์ˆ˜๋ฅผ ๋ฒ„ํŠผ์œผ๋กœ ์ž…๋ ฅํ•˜์˜€์„ ๋•Œ์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•ด ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๊ณ ์žฅ ๋‚œ ๋ฒ„ํŠผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ
    • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ„ํŠผ์„ DFS๋กœ ํ†ตํ•ด ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด๊ฐ€๋ฉฐ, depth๋Š” N์˜ ๊ธธ์ด๋งŒํผ ํƒ์ƒ‰ํ•œ๋‹ค.
      • ๋งŒ์•ฝ ์ฐพ๊ณ ์ž ํ•˜๋Š” ์ฑ„๋„์ด 1234๋ผ๋ฉด, ์ˆซ์ž ๋ฒ„ํŠผ์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ 4์ž๋ฆฌ ์ด์ƒ ์„ ํƒํ•  ํ•„์š”๋Š” ์—†๋‹ค.
    • abs(N - ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์ž…๋ ฅํ•œ ์ฑ„๋„)์€ +, -๋ฅผ ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

์ฝ”๋“œ

from sys import stdin


def dfs(channel, press_cnt):
    global answer

    for button in available:
        cur_channel = int(channel + button)
        remainder = abs(n - cur_channel)
        answer = min(answer, press_cnt + remainder + 1)

        if press_cnt < channel_length:
            dfs(str(cur_channel), press_cnt + 1)


if __name__ == '__main__':
    n = int(stdin.readline())
    channel_length = len(str(n))
    m = int(stdin.readline())
    answer = abs(100 - n)

    if not m:
        print(min(answer, channel_length))
        exit(0)

    available = {str(num) for num in range(10)} - set(stdin.readline().split())
    dfs('', 0)
    print(answer)

 ์ฑ„์  ์ค‘, 92%์™€ 97%์—์„œ ํ‹€๋ ธ๋‹ค๊ณ  ํ•˜์˜€๋‹ค. M์ด 0์ธ ๊ฒฝ์šฐ, ์ฆ‰ ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ์ด ์—†๋Š” ๊ฒฝ์šฐ ๊ฐ€๊ณ ์ž ํ•˜๋Š” ์ฑ„๋„์˜ ํฌ๊ธฐ (N์ด 1234์ธ ๊ฒฝ์šฐ : 4) ๋งŒํผ ๋ฐ˜์˜ํ•˜์˜€๋Š”๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋‹ˆ, ๋‹จ์ˆœํžˆ +, -๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ์ตœ์†Œ์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์€ ๋ฐ˜๋ก€๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„์„œ ํ‹€๋ ธ์—ˆ๋‹ค.๐Ÿ˜…

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€