ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 1081 ํ•ฉ with Python
    PS 2022. 7. 22. 20:06
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 1081 ํ•ฉ

    ๐Ÿ’ก ์กฐ๊ฑด

    1. L๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , U๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ชจ๋“  ์ •์ˆ˜์˜ ๊ฐ ์ž๋ฆฌ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.
      0 โ‰ค L โ‰ค U โ‰ค 2,000,000,000
    1. ์ˆ˜ํ•™ ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ

    24660 308357171

    ์‹คํ–‰๊ฒฐ๊ณผ

    11379854844

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ๊ฐ€์žฅ ๋จผ์ € ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉฐ ์ฃผ๋ชฉํ•ด์•ผํ•  ๋ถ€๋ถ„์€ L๊ณผ U์˜ ๋ฒ”์œ„์ด๋‹ค.
      L๊ณผ U์˜ ๋ฒ”์œ„๋Š” ์ตœ๋Œ€ 20์–ต๊นŒ์ง€๋กœ, ์ผ์ผํžˆ ๊ฒ€์‚ฌํ–ˆ์„ ๋•Œ ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” 0๋ถ€ํ„ฐ 20์–ต๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆ˜๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—
      ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ 2์ดˆ๋ผ๋Š” ์‹œ๊ฐ„ ์•ˆ์— ์ ˆ๋Œ€ ํ•ด๊ฒฐํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.
    1. (1)๋ฒˆ์—์„œ ์ •๋ฆฌํ•œ๋Œ€๋กœ, ์šฐ๋ฆฌ๋Š” L๊ณผ U์˜ ๋ฒ”์œ„๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ผ์ผํžˆ ์ˆซ์ž ํ•˜๋‚˜์”ฉ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ”ผํ•ด ๊ฐ ์ˆซ์ž์˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋”ํ•ด ๋‹ต์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
      L, U ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ L๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , U๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ชจ๋“  ์ •์ˆ˜์˜ ๊ฐ ์ž๋ฆฌ์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์–ด๋Š ์ผ์ • ๊ตฌ๊ฐ„์— ๋Œ€ํ•œ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.
      ๊ตฌ๊ฐ„ํ•ฉ์˜ ๊ฐœ๋…์œผ๋กœ ์ƒ๊ฐ์„ ํ•ด๋ณด์ž.
    1. L - 1 ๊นŒ์ง€ ๋“ฑ์žฅํ•œ 0~9์˜ ๊ฐœ์ˆ˜๋ฅผ K, U๊นŒ์ง€ ๋“ฑ์žฅํ•œ 0-9 ์˜ ๊ฐœ์ˆ˜๋ฅผ P ๋ผ๊ณ  ํ–ˆ์„ ๋•Œ,
      (P - K) ๋Š” L ๋ถ€ํ„ฐ U ์˜ ๋ฒ”์œ„์— ํ•ด๋‹นํ•˜๋Š” 0-9์˜ ๊ฐœ์ˆ˜๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
    1. L = 1000, U = 1234 ๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
      • 1์˜ ์ž๋ฆฌ์—์„œ๋ถ€ํ„ฐ 0~9๊นŒ์ง€์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ count ํ•  ๊ฒƒ์ธ๊ฐ€?
      • ๊ฐ€์žฅ ๋†’์€ ์ž๋ฆฌ์—์„œ๋ถ€ํ„ฐ 0-9๊นŒ์ง€์˜ ๋“ฑ์žฅ ํšŸ์ˆ˜๋ฅผ count ํ•  ๊ฒƒ์ธ๊ฐ€?
        ์ผ๋‹จ ๋ณธ์ธ์˜ ํ’€์ด๋Š” 1์˜ ์ž๋ฆฌ์—์„œ๋ถ€ํ„ฐ 0~9๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ count ํ–ˆ๋‹ค.
    1. ๋จผ์ €, 1์˜ ์ž๋ฆฌ์— ์–ด๋–ค ์ˆซ์ž๊ฐ€ ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด์ž. ๋จผ์ € 0๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž.
      10 ~ 90 : 10
      100 ~ 190, 200 ~ 290, ... ,900~990 : 90
      1000 ~ 1090, 1100 ~ 1190 : 20
      1200 ~ 1230 : 4
      ์ด 124 ํšŒ
    1. 1์˜ ์ž๋ฆฌ์—์„œ 5๊ฐ€ ๋ช‡๋ฒˆ ๋“ฑ์žฅํ• ๊นŒ?
      15 ~ 95 : 10
      105 ~ 195, 205 ~ 295, ... ,905 ~ 995 : 90
      1005 ~ 1095, 1105 ~ 1195 : 20
      1205 ~ 1225 : 3
      ์ด 123 ํšŒ
    1. 10์˜ ์ž๋ฆฌ์—์„œ 4๋Š” ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ• ๊นŒ?
      40 ~ 49 : 10
      140 ~ 149, 240 ~ 249, ..., 940 ~ 949 : 90
      1040 ~ 1049, 1140 ~ 1149 : 20
      ์ด 120 ํšŒ.
    1. ์—ฌ๊ธฐ์„œ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€, ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ์ˆซ์ž์˜ ์ž๋ฆฟ์ˆ˜ ๋ณ„๋กœ ๊ฐ ์ˆซ์ž๊ฐ€ ๋ช‡๋ฒˆ์”ฉ ๋“ฑ์žฅํ•˜๋Š”์ง€ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
      ๋˜ํ•œ, 10์˜ ์ž๋ฆฌ์—์„œ 4๊ฐ€ ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ•˜๋Š”์ง€๋ฅผ ์…€ ๋•Œ์—๋Š” 1234๋ฅผ ๋„˜์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 1149๊นŒ์ง€ ์„ธ์–ด 120ํšŒ๊ฐ€ ๋‚˜์™”๋‹ค.
      ์ด์ œ ์†Œ์Šค์ฝ”๋“œ ๋กœ์ง์„ ๋”ฐ๋ผ์„œ ์ดํ•ดํ•˜๋ฉด ์‰ฝ๋‹ค.
    1. n_arr ์€ ์ž…๋ ฅ๋ฐ›์€ n - 1 ๊นŒ์ง€ 0 ๋ถ€ํ„ฐ 9์˜ ๋“ฑ์žฅํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.
      m_arr ์€ ์ž…๋ ฅ๋ฐ›์€ m๊นŒ์ง€ 0 ๋ถ€ํ„ฐ 9์˜ ๋“ฑ์žฅํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.
    1. ๊ฐ€์žฅ ๋จผ์ € 1์˜ ์ž๋ฆฌ์ˆ˜์—์„œ 0~9๊นŒ์ง€์˜ ๋“ฑ์žฅํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— point ๋ฅผ 1๋กœ, n์„ -1 ํ•ด์ค€๋’ค n์ด 0์ด ์•„๋‹ ๋•Œ๊นŒ์ง€ while ๋ฐ˜๋ณต์„ ํ•œ๋‹ค.
      • n % 10 ์ด 9๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, n ์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜์˜ ์ˆซ์ž์— ํ•ด๋‹นํ•˜๋Š” n_arr ์›์†Œ๊ฐ’์— point๋ฅผ ๋”ํ•ด์ค€๋‹ค.
        ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์ž…๋ ฅ๋ฐ›์€ n์ด 1234 ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ 1233, 1232, 1231, 1230 ๊นŒ์ง€ ๊ฐ ์ž๋ฆฟ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋ฅผ point ๋งŒํผ ์˜ฌ๋ ค์ค€๋‹ค.
    - n < 10 ์ธ ๊ฒฝ์šฐ๋Š” ์˜ค๋ฅธ์ชฝ ๋ ๋ถ€ํ„ฐ ํ™•์ธํ•˜์—ฌ n //= 10 ์„ ๋ฐ˜๋ณตํ•ด ํ•œ์ž๋ฆฌ์ˆ˜๊ฐ€ ๋‚จ์•˜์„ ๋•Œ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๋กœ์ง์ด๋‹ค. 
      ์ด ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ๋งˆ์ง€๋ง‰์— ํ•ด๋‹นํ•˜๋Š” ๋กœ์ง์ด๋‹ˆ ์ดํ›„์— ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.
    
    
    - n >= 10 ์ธ ๊ฒฝ์šฐ๋Š” ๋งŒ์•ฝ 1234 ๋ผ๋ฉด 1์˜ ์ž๋ฆฌ๋ฅผ ๋ณผ ๋•Œ, 4 ์ดํ•˜๋Š” 124๋ฒˆ์ด ๋“ฑ์žฅํ•˜๋ฉฐ, 5 ์ด์ƒ์€ 123๋ฒˆ์ด ๋“ฑ์žฅํ•œ๋‹ค.
      ์ด๋Š” `(n // 10 + 1) * point` ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
    
    
    - ๋‹ค์‹œ n < 10 ์ธ ๊ฒฝ์šฐ๋ฅผ ๋ณด์ž๋ฉด, 0๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ๊ฐ ์ž๋ฆฌ์— ๋Œ€ํ•ด์„œ point ๋งŒํผ์”ฉ ๋”ํ•ด์ฃผ๊ณ , 0์ธ ๊ฒฝ์šฐ๋Š” point ๋ฅผ ๋นผ์ค€๋‹ค.
      ๋‹ค๋ฅธ ์ˆซ์ž๋Š” ์•ฝ 130ํšŒ ๋“ฑ์žฅํ•˜๋Š” ๊ฒฝ์šฐ, 0์€ 120ํšŒ ๋“ฑ์žฅํ•œ๋‹ค. ์ง์ ‘ ๊ณ„์‚ฐํ•ด๋ณด์ž.
    1. 0๋ถ€ํ„ฐ n - 1 ๊นŒ์ง€ 09๊นŒ์ง€์˜ ๋“ฑ์žฅํšŸ์ˆ˜๋ฅผ n_arr์— ์ €์žฅํ–ˆ๋‹ค๋ฉด, ์ด์ œ 0๋ถ€ํ„ฐ m๊นŒ์ง€ 09 ๋“ฑ์žฅํšŸ์ˆ˜๋ฅผ m_arr ์— ๊ฐ™์€ ๋กœ์ง์œผ๋กœ ์ €์žฅํ•œ๋‹ค.
    1. ์ดํ›„๋Š” ๊ฐ์ž๋ฆฌ์˜ ํ•ฉ์„ ๋”ํ•˜๋Š” ์ž‘์—…์ด๋‹ค.
      n_arr, m_arr ์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ ๋“ฑ์žฅํšŸ์ˆ˜ (m_arr[i] - n_arr[i]) ์— i ๋ฅผ ๊ณฑํ•ด ans ์— ๋”ํ•ด์ค€๋‹ค.
      ์ด๋Š” ๊ฐ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋”ํ•ด์ฃผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    
    n, m = map(int, stdin.readline().split())
    
    n_arr = [0 for _ in range(10)]
    m_arr = [0 for _ in range(10)]
    
    n -= 1
    point = 1
    while n != 0:
        while n % 10 != 9:
            for i in str(n):
                n_arr[int(i)] += point
            n -= 1
        if n < 10:
            for i in range(n + 1):
                n_arr[i] += point
            n_arr[0] -= point
            break
        else:
            for i in range(10):
                n_arr[i] += (n // 10 + 1) * point
        n_arr[0] -= point
        point *= 10
        n //= 10
    
    
    point = 1
    while m != 0:
        while m % 10 != 9:
            for i in str(m):
                m_arr[int(i)] += point
            m -= 1
        if m < 10:
            for i in range(m + 1):
                m_arr[i] += point
            m_arr[0] -= point
            break
        else:
            for i in range(10):
                m_arr[i] += (m // 10 + 1) * point
        m_arr[0] -= point
        point *= 10
        m //= 10
    
    
    ans = 0
    for i in range(10):
        ans += (m_arr[i] - n_arr[i]) * i
    
    print(ans)

    ๐Ÿ’พ ๋ฐฐ์šด์ 

    1. ์ˆ˜ํ•™์  ์‚ฌ๊ณ ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•œ ๋ฌธ์ œ์˜€๋‹ค. ์Šค์Šค๋กœ๋Š” ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์›Œ, ๋‚˜์—๊ฒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์œผ๋กœ ๋„์›€์„ ์ฃผ๋Š” ์Šค์Šน์ด์ž ๋™์ƒ์—๊ฒŒ ๋„์›€์„ ๋ฐ›์•„ ์ดํ•ดํ–ˆ๋‹ค.
    1. ๊ฐ ์ž๋ฆฌ์ˆ˜ ๋ณ„๋กœ 0~9์˜ ์ˆซ์ž๊ฐ€ ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ•˜๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ž‘์—…์ด์—ˆ๋‹ค.
    1. 0์˜ ๋“ฑ์žฅํšŸ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ๋‹ค์‹œํ•œ๋ฒˆ ์ฒดํฌํ•˜๊ณ  ๊ณ„์‚ฐํ•ด๋ณด์•„์•ผํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 1019 ๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ‹€๋ฆฌ๊ฒŒ ๋œ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.