๐Ÿ”ข N์œผ๋กœ ๋งŒ๋“ค๊ธฐ

๋ฐฑ์ค€ Gold4

N์œผ๋กœ ๋งŒ๋“ค๊ธฐ

๋ฌธ์ œ


์ค€ํ•˜๋Š” ๋…ธํŠธ์— ์ˆ˜๋ฅผ ์ ๋‹ค๊ฐ€ ์ˆ˜๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ฐฉ์‹์„ ๊นจ๋‹ฌ์•˜๋‹ค.

์ฒ˜์Œ์— ์–ด๋–ค ์ˆซ์ž ํ•˜๋‚˜๋ฅผ ์ ๊ณ  ๋งŒ๋“ค์–ด์ง„ ์ˆ˜์˜ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์— ์ˆซ์ž๋ฅผ ๊ณ„์† ๋ถ™์ด๋ฉด ์–ด๋–ค ์ˆ˜ N์ด๋“  ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋‹ค์‹œ ๋งํ•ด ์–ด๋–ค ์ˆ˜ N์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š”, ์ฒ˜์Œ์— ์–ด๋–ค ์ˆซ์ž๋ฅผ ํ•˜๋‚˜ ์ ๊ณ  ์•„๋ž˜์˜ ๋‘ ๊ฐ€์ง€ ํ–‰๋™์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

  1. ์ˆ˜์˜ ์™ผ์ชฝ์— ์ˆซ์ž๋ฅผ ํ•˜๋‚˜ ์ ๋Š”๋‹ค.
  2. ์ˆ˜์˜ ์˜ค๋ฅธ์ชฝ์— ์ˆซ์ž๋ฅผ ํ•˜๋‚˜ ์ ๋Š”๋‹ค.

์ค€ํ•˜๋Š” ์–ด๋–ค ์ˆ˜ N์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐ€์ง€์ธ์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค. ์ด๋ฅผ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด์ฃผ์ž. ์ˆซ์ž๋ฅผ ์ ๋Š” ๊ณผ์ •์—์„œ ๋‚˜์˜จ ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋ชจ๋‘ ๊ฐ™๋‹ค๋ฉด ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

๋‹จ, ์ˆซ์ž๋ฅผ ์ ๋Š” ๊ณผ์ •์—์„œ ์ˆ˜๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž…๋ ฅ


์Œ์ด ์•„๋‹Œ ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (0 โ‰ค N โ‰ค 10,000,000)

์ถœ๋ ฅ


N์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1

521

์˜ˆ์ œ ์ถœ๋ ฅ 1

4

521์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 4๊ฐ€์ง€์ด๋‹ค.

  • 1 โ†’ 21 โ†’ 521
  • 2 โ†’ 21 โ†’ 521
  • 2 โ†’ 52 โ†’ 521
  • 5 โ†’ 52 โ†’ 521

์˜ˆ์ œ ์ž…๋ ฅ 2

9111

์˜ˆ์ œ ์ถœ๋ ฅ 2

4

9111์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 4๊ฐ€์ง€์ด๋‹ค.

  • 1 โ†’ 11 โ†’ 111 โ†’ 9111
  • 1 โ†’ 11 โ†’ 911 โ†’ 9111
  • 1 โ†’ 91 โ†’ 911 โ†’ 9111
  • 9 โ†’ 91 โ†’ 911 โ†’ 9111

๐Ÿ“– ๊ฐ€์ ธ๋‹ค ์“ฐ๊ธฐ

์ด์ „์— ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ–ˆ๋˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฐ๋‚˜์„œ ๊ทธ๋ ‡๊ฒŒ ์ ‘๊ทผํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์‹คํŒจ โ€ฆ

์™œ๋ƒํ•˜๋ฉด ํˆฌํฌ์ธํ„ฐ๋Š” ํŠน์ •ํ•œ ํ•ฉ์„ ๊ฐ–๋Š” ๋ถ€๋ถ„ ์—ฐ์† ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ๋ฐฉ๋ฉด ์ด ๋ฌธ์ œ๋Š” ๋ถ€๋ถ„ ์—ฐ์† ์ ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๊ฐ€ ๋ฐฑํŠธ๋ž˜ํ‚น์œผ๋กœ ๋˜์–ด์žˆ์–ด ์ด ๋ฌธ์ œ๊ฐ€ ์™œ ๋ฐฑํŠธ๋ž˜ํ‚น์ธ์ง€ ํ•œ์ฐธ์„ ๊ณ ๋ฏผํ–ˆ์ง€๋งŒ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜์–ด์„œ ์น˜์š•์ ์ด๊ฒŒ๋„ ์†”๋ฃจ์…˜์„ ์ฐธ๊ณ ํ•˜์˜€๋‹ค.

๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ™œ์šฉํ•˜๋Š” ์œ ํ˜•์ด ๊ต‰์žฅํžˆ ๋งŽ๊ฒ ์ง€๋งŒ ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ [๋ฌธ์ž์—ด์„ ์Œ“๊ฑฐ๋‚˜ ์ค„์ผ ๋•Œ] ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ“ ๊ณผ์ • ์„ค๊ณ„/๊ด€๋ฆฌ

์ผ๋‹จ DFS ๋™์ž‘ ๊ณผ์ •์€ ์•„๋ž˜์—์„œ ์„ค๋ช…ํ•˜๊ณ  ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ๋จผ์ € ์งš์–ด๋ณด๊ฒ ๋‹ค.

521์„ ๋งŒ๋“œ๋Š” ๊ณผ์ • ์ค‘์— 5 โžก๏ธ 52 โžก๏ธ 521 ์„ ์šฐ๋ฆฌ๋Š” 552521๋กœ ํ‘œํ˜„ํ•  ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ๊ธธ์ด๊ฐ€ N์ธ ์ˆซ์ž์˜ ๊ณผ์ • ๊ธธ์ด๋Š” N(N+1) / 2 ๊ฐ€ ๋œ๋‹ค. (๋“ฑ์ฐจ์ˆ˜์—ด์˜ ํ•ฉ)

DFS๋ฅผ ํ†ตํ•˜์—ฌ ๊ตฌํ•œ ๋ชจ๋“  ๊ณผ์ •์„ ์ง‘ํ•ฉ์— ๋„ฃ๊ณ  (์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ) ์šฐ๋ฆฌ๋Š” ์ตœ์ข…์ ์œผ๋กœ ์ง‘ํ•ฉ์˜ ๊ธธ์ด๋ฅผ ๋ฝ‘์•„๋‚ด๋ฉด ๋œ๋‹ค.

แ„‹แ…งแ†ซแ„‰แ…ณแ†ธแ„Œแ…กแ†ผ-74

5,2,1 ์ค‘์—์„œ 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์™ผ์ชฝ๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜์—ฌ process ๋ณ€์ˆ˜์— ๊ณผ์ •์„ ๊ณ„์† ๊ธฐ๋กํ•ด๋‚˜๊ฐ„๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์™ผ์ชฝ์ด 5๊นŒ์ง€ ๋„๋‹ฌํ–ˆ์œผ๋ฉด ๋‹ค์‹œ ์˜ค๋ฅธ์ชฝ์„ 1๊นŒ์ง€ ํƒ์ƒ‰ํ•œ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•ด์„œ ์ฒซ๋ฒˆ์งธ ์ผ€์ด์Šค 2 โžก๏ธ 252 โžก๏ธ 252521 ์ด ๋งŒ๋“ค์–ด์กŒ๊ณ  ์ด ๊ณผ์ •์„ ๊ณ„์†ํ•˜์—ฌ ๋ฐ˜๋ณตํ•œ๋‹ค.

2๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 5์™€ 1์—์„œ ์‹œ์ž‘ํ–ˆ์„ ๊ฒฝ์šฐ๋„ ๋™์ผํ•˜๊ฒŒ ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ง„ํ–‰๊ณผ์ •์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

แ„‹แ…งแ†ซแ„‰แ…ณแ†ธแ„Œแ…กแ†ผ-75

แ„‹แ…งแ†ซแ„‰แ…ณแ†ธแ„Œแ…กแ†ผ-76

แ„‹แ…งแ†ซแ„‰แ…ณแ†ธแ„Œแ…กแ†ผ-77

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป CODE

import sys
input = sys.stdin.readline

num = input().rstrip()
length = len(num)*(len(num)+1) // 2
way = set()

def dfs(left,right,process):
    if len(process) == length:
        way.add(process)
        return
    
    if left > 0:
        dfs(left-1,right,process+num[left-1:right+1])
    
    if right < len(num):
        dfs(left,right+1,process+num[left:right+2])
    
for i in range(len(num)):
    dfs(i,i,num[i])

print(len(way))

ยฉ 2022. All rights reserved.

Powered by Hydejack v9.1.6