๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm/BOJ

[๊ธฐ์ดˆ] 06. ํ•จ์ˆ˜

 

๐Ÿ“ช [ํ•จ์ˆ˜]

 

 

ํ•จ์ˆ˜ ๋‹จ๊ณ„

ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด ๋ด…์‹œ๋‹ค. (์ด ๋ฌธ์ œ๋Š” C, C++, Python, Java, Go๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์˜ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ๋ฌด์‹œํ•ด ์ฃผ์„ธ์š”.)

www.acmicpc.net

 

 


 

 

๐Ÿ“Œ ๋ฌธ์ œ1. ์ •์ˆ˜ N๊ฐœ์˜ ํ•ฉ [15596๋ฒˆ]

def solve(a):
    return sum(a)

 

 

 

 

๐Ÿ“Œ ๋ฌธ์ œ2. ์…€ํ”„ ๋„˜๋ฒ„ [4673๋ฒˆ]

โœ”๏ธ a + b*X < c*X๊ฐ€ ๋˜๊ฒŒ ํ•˜๋Š” ์ตœ์†Œ X๋ฅผ ๊ตฌํ•˜๋ฉด ๋จ. → '(C-B)X>A'

def d(num) -> int:
    for x in str(num):
        num += int(x)
    return num


all_set = set(range(1, 10001))
not_ans_set = set()  # {}
for n in sorted(all_set):
    dn = d(n)
    not_ans_set.add(dn)

ans_set = sorted(all_set - not_ans_set)
print(*ans_set, sep='\n')

 

  โ€ป ๋‹ค๋ฅธ ํ’€์ด

๋”๋ณด๊ธฐ

[์žฌ๊ท€๋ฅผ ์ด์šฉํ•œ ํ’€์ด]

offset = 10000
arr = [0] * (offset + 1)  # ์ธ๋ฑ์Šค 0์€ ๋ฌด์‹œ. 1๋ถ€ํ„ฐ 10000๊นŒ์ง€ ์ทจ๊ธ‰.


def d(num):
    for n in str(num):
        num += int(n)
    if num <= offset:
        arr[num] = 1
    else:
        return
    d(num)


if __name__ == '__main__':
    for i in range(1, offset + 1):
        if arr[i] == 0:
            d(i)
    for i in range(1, offset + 1):
        if arr[i] == 0:
            print(i)

 

 

 

๐Ÿ“Œ ๋ฌธ์ œ3. ํ•œ์ˆ˜ [1065๋ฒˆ]

def check_num(num) -> int:
    count = 0
    for n in range(1, num + 1):
        if n < 100:
            count += 1
        else:
            str_n = str(n)
            between_val_1 = int(str_n[0]) - int(str_n[1])
            between_val_2 = int(str_n[1]) - int(str_n[2])
            if between_val_1 == between_val_2:
                count += 1
    return count


input_num = int(input())
print(check_num(input_num))

 

 

 

 


 

๐Ÿ”” ์ค‘์š”๊ฐœ๋…์ •๋ฆฌ

  1. sorted()
  2. print(*iterable, sep='\n')
  3. ์ˆซ์ž์˜ ๊ฐ ์ž๋ฆฌ ์ˆ˜ ํ™œ์šฉ์‹œ 'str'๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•จ

 

 

728x90