[Python/ํŒŒ์ด์ฌ] [๐Ÿฅˆ4] ๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1065 - ํ•œ์ˆ˜

keyneneยท2022๋…„ 10์›” 10์ผ
0

Python

๋ชฉ๋ก ๋ณด๊ธฐ
2/26

๐Ÿ“–[Python/ํŒŒ์ด์ฌ][๐Ÿฅˆ4] ๋ฐฑ์ค€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1065 - ํ•œ์ˆ˜

๐Ÿ“œ๋ฌธ์ œ



๐Ÿ“•ํ’€์ด๋ฐฉํ–ฅ

์šฐ์„ , 1~99๊นŒ์ง€ ์ˆซ์ž๋Š” ํ•œ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ N๊ฐœ์ž„.
100์ด์ƒ์€ ์ž…๋ ฅ๋ฐ›๋Š” ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ๋„ฃ๊ณ , [0],[1] ์ฐจ์ด์™€ [2],[1] ์ฐจ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด cnt๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ,
cnt๋ฅผ return ํ•ด๋ณด์ž


๐Ÿ“์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„์ˆœ์„œ

  1. HanSu(n) ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ
  2. 100๋ฏธ๋งŒ / 100์ด์ƒ ๊ธฐ์ค€์œผ๋กœ if๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, 100์ด์ƒ ์ผ€์ด์Šค๋Š” ๋ฐ”๋กœ ํ•œ์ˆ˜์ธ ๊ฒƒ๋งŒ ์นด์šดํŠธํ•˜๊ธฐ
   /* if/for ๋ฌธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ */
   1~1000๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ i๋ฅผ ๋Œ๋ฆฌ๋ฉด์„œ ์ผ€์ด์Šค if๋ฌธ์œผ๋กœ ๊ตฌ๋ถ„.
   N์ด 100๋ฏธ๋งŒ : ๋ฐ”๋กœ N ์ถœ๋ ฅ
   N์ด 100์ด์ƒ : list์— ์ž๋ฆฟ์ˆ˜๋ฅผ ์ง‘์–ด๋„ฃ์–ด [0],[1],[2] ๋น„๊ตํ•ด์„œ ํ•œ์ˆ˜๋งŒ cnt++

๐Ÿ’ป๊ฒฐ๊ณผ์ฝ”๋“œ

def HanSu(n):
    cnt = 0;
    for i in range(1,n+1):
    	# 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅ
        han = list(map(int,str(i)))
        
        # 100๋ฏธ๋งŒ : ๊ฒฝ์šฐ ์ž๊ธฐ์ž์‹ ์ด ํ•œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— cnt ์ฆ๊ฐ€
        if i < 100 :
            cnt += 1;
            
        # 100์ด์ƒ : ํ•œ์ˆ˜(์ฒซ๋ฒˆ์งธ ๋‘๋ฒˆ์งธ ์ˆ˜ ์ฐจ์ด == ๋‘๋ฒˆ์จฐ ์„ธ๋ฒˆ์งธ ์ˆ˜ ์ฐจ์ด)์ธ ๊ฒฝ์šฐ cnt ์ฆ๊ฐ€ 
        elif han[0]-han[1] == han[1]-han[2] :
            cnt += 1;
    return cnt
    
N = int(input())
print(HanSu(N))

โœ๏ธ1. HanSu(n) ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ

def HanSu(n):
  cnt = 0; #์šฐ์„  ํ•œ์ˆ˜ ๊ณ„์‚ฐํ•  ๋ณ€์ˆ˜ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ธฐ
  for i in range(1, n+1):
    if i < 100 :
      # 100๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ ์ฝ”๋“œ
    elif i >= 100 :
      # 100์ด์ƒ์ธ ๊ฒฝ์šฐ ์ฝ”๋“œ
  return cnt;

N = int(input())
print(HanSu(N))
์“ธ๋ฐ์—†๋Š” ๋ฒ”์œ„์ง€์ •์„ ์ค„์ด๊ณ  ๋”ฑ 2๊ฐ€์ง€ ์ผ€์ด์Šค์˜ ํ•˜๋‚˜์˜ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Œ

โœ๏ธ2. 100๋ฏธ๋งŒ / 100์ด์ƒ ์ผ€์ด์Šค ๊ตฌํ˜„

(์ค‘๋žต)

for i in range(1,n+1):
  han = list(map(int,str(i))) #han์— 3์ž๋ฆฟ์ˆ˜ ๊ฐ๊ฐ ์ธ๋ฑ์‹ฑ
  
  #100๋ฏธ๋งŒ : cnt++
  if i < 100 :
    cnt += 1;
    
  #100์ด์ƒ : ๊ฐ ์ž๋ฆฟ์ˆ˜ ๋น„๊ต ํ›„ ์ผ์น˜ํ•˜๋ฉด cnt++
  elif han[0]-han[1] == han[1]-han[2] :
    cnt += 1;
๐Ÿ‘‰๐Ÿปnum_list ์—†์ด ๋ฐ”๋กœ ํ•œ์ˆ˜๋ฅผ ์นด์šดํŒ…

๐Ÿ“š๊ธฐ์กด ๋‚ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์˜ค๋ฅ˜์™€ ๋น„ํšจ์œจ์ ์ธ ์ด์œ  ์ •๋ฆฌ

โ€ป ๋‚ด๊ฐ€ ์ฒ˜์Œ ๊ตฌํ˜„ํ•œ d(n) ํ•จ์ˆ˜
(๊ฒฐ๋ก ์ ์œผ๋ก  ์ •๋‹ต์ด๊ธด ํ•˜์ง€๋งŒ, ๋น„ํšจ์œจ์ ์ž„)

<def HanSu(N):
    if N > 110 : #110๋ณด๋‹ค ํด ๋•Œ ํ•œ์ˆ˜๋Š” 99์—์„œ ๋”ํ•ด๊ฐ€์•ผํ•จ
        cnt = 99;
        for j in range(110, int(N)+1):
            han_list = list(map(int,str(j))) # [1],[1],[0]
            #num์ด๋ผ๋Š” ๋น„๊ต list๋ฅผ ๋งŒ๋“ค์ž (์ด๊ฑด ๋ฌด์กฐ๊ฑด han list ๋ณด๋‹ค ํ•œ์ž๋ฆฟ์ˆ˜ ์ž‘๋‹ค)
            num_list = [0]*(len(han_list)-1)
            
            #์ด ๋ฐ˜๋ณต๋ฌธ์€ han_list์— ๋‹ด๊ธด ๋ฐฐ์—ด ์ธ๋ฑ์Šค์˜ ์ˆœ์„œ๋ฅผ ๋Œ๋ฉด์„œ
            #์ฐจ์ด๋ฅผ num_list์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ for๋ฌธ์ด๋‹ค
            for i in range(len(han_list)):
            
                #"[i+1]๋ฒˆ์งธ ์ธ๋ฑ์Šค - [i]๋ฒˆ์งธ ์ธ๋ฑ์Šค"๋ฅผ num_list์— ๋„ฃ์„ ์˜ˆ์ •
                #han_list๋ณด๋‹ค num_list๊ฐ€ ํฌ๋ฉด ์•ˆ๋˜๋‹ˆ๊นŒ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•ด๋‘์ž
                if i+1 < len(han_list) :
                    num_list[i] = (han_list[i+1])-(han_list[i])
            
            #์œ„ ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋งŒ๋“ค์–ด๋‘” num_list์˜ [0]๋ฒˆ์งธ ์ธ๋ฑ์Šค์™€ ๋‚˜๋จธ์ง€ ์ธ๋ฑ์Šค๊ฐ€ ์ค‘๋ณต๋˜๋ฉด(count)
            #cnt++๋ฅผ ํ•˜๋ฉฐ ์ตœ์ƒ์œ„ for๋ฌธ์„ ๋‹ค์‹œ ๋ฐ˜๋ณตํ•œ๋‹ค
            if num_list.count(num_list[0]) == (len(han_list)-1) :
                cnt += 1;
    
    elif N < 100 : #100๋ณด๋‹ค ์ž‘์œผ๋ฉด ํ•œ์ˆ˜๋Š” N๊ฐœ
        cnt = N;

    else: #100๋ณด๋‹ค ํฌ๊ณ  110๋ณด๋‹ค ์ž‘์„๋• ํ•œ์ˆ˜๋Š” 99๊ฐœ
        cnt = 99;

    return cnt

1. ๋ฒ”์œ„์˜ค๋ฅ˜

1) 100๋ณด๋‹ค ์ž‘์œผ๋ฉด ํ•œ์ˆ˜๋Š” N๊ฐœ,
2) 100๋ณด๋‹ค ํฌ๊ณ  110๋ณด๋‹ค ์ž‘์œผ๋ฉด ํ•œ์ˆ˜๋Š” 99๊ฐœ๋กœ ํ†ต์ผ โ† ์ด๊ฒŒ ํ•„์š”๊ฐ€ ์—†๋Š” ๊ณผ์ •์ž„
3) 110๋ณด๋‹ค ํฌ๋ฉด ์ž๋ฆฟ์ˆ˜๋งˆ๋‹ค ๋น„๊ตํ•ด๊ฐ€๋ฉด์„œ ํ•œ์ˆ˜๋ฅผ ๋”ํ•ด์•ผ ํ•จ

๐Ÿ‘‰๐Ÿป๋งž๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ ๋ฒ”์œ„์ง€์ •๋ถ€ํ„ฐ ์ž˜๋ชป๋˜์—ˆ๋‹ค.
"1~99 / 100~109 / 110~ == 1~99 / 100~" ์ด๋ฏ€๋กœ ๊ตณ์ด 99~110์œผ๋กœ ๋‚˜๋ˆŒ ํ•„์š”๋„ ์—†์—ˆ๊ฑฐ๋‹ˆ์™€,
100~110์€ "110~"์˜ ์ผ€์ด์Šค์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋ฏ€๋กœ ๋‘ ์ผ€์ด์Šค๋ฅผ ํ•ฉ์ณ๋„ ์ƒ๊ด€์—†๋‹ค

2. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ค๋ฅ˜

1) ๋‘์ž๋ฆฟ์ˆ˜ ์ดํ•˜๋ฉด ๋ฐฐ์—ด์˜ [2]๋ฒˆ์งธ ์ธ๋ฑ์Šค๊ฐ€ ์—†์œผ๋ฏ€๋กœ N์œผ๋กœ ์ถœ๋ ฅํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์ด๊ณ ,
2) ์„ธ์ž๋ฆฟ์ˆ˜๋ฉด [0][1] [2] ๋‹ค ์žˆ์œผ๋ฏ€๋กœ "[1]-[0] == [2]-[1]"์œผ๋กœ ๋น„๊ต๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,
3) ๋„ค์ž๋ฆฟ์ˆ˜๋ฉด???? [3]๋„ ํ•„์š”ํ•˜๋‹ˆ๊นŒ ํ ,,, ์ž๋ฆฟ์ˆ˜ ์ฐจ์ด ๋น„๊ต๋ฅผ ์œ„ํ•œ num_list๋ฅผ ๋งŒ๋“ค์ž.
๐Ÿคท๐Ÿปโ€โ™€๏ธ "[1]-[0] == [2]-[1]" ๋Œ€์‹  "[i+1]-[i]"๋ฅผ num_list์— ๋„ฃ๋Š”๊ฑธ๋กœ ํ•˜๊ณ ,
๋Œ€์‹ , "if i+1 < len(han_list)"๋ผ๋Š” ๋ฒ”์œ„์ง€์ •์„ ํ•˜์ž

๐Ÿ‘‰๐Ÿป์ด์ œ์  ๋‚œ๊ตญ..
์ผ๋‹จ ๋ฌธ์ œ์—์„œ N์€ 1~1000๊นŒ์ง€์˜ ์ˆ˜, ์ฆ‰ "3์ž๋ฆฟ์ˆ˜๊นŒ์ง€"๋ผ๊ณ  ๋ฒ”์œ„๋ฅผ ๋ช…์‹œํ–ˆ๋‹ค.
[3]๋ฒˆ์งธ ์ธ๋ฑ์Šค๋Š” ๊ณ ๋ คํ•  ํ•„์š”๋„ ์—†์—ˆ๋˜ ๊ฒƒ์ž„!
๊ฒฐ๋ก ์ ์œผ๋กœ num_list๋„ ์“ธ๋ฐ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ๋‚ญ๋น„...

profile
keynene

0๊ฐœ์˜ ๋Œ“๊ธ€