[백준]기초 알고리즘 - 2501, 3640, 10818, 10870, 2309, 1978, 1292, 2581, 2609(python)

HS·2024년 7월 31일

2501 약수구하기

#2501
N,K = map(int,input().split())
result = []

for i in range(1,N+1):
    if N%i == 0:
        result.append(i)

if len(result) < K:
    print(0)
else:
    print(result[K-1])

3640 이진수

#3460
T = int(input())
for _ in range(T):
    n = int(input())
    ans = ''

    # 8 4 2 1
    # 13이면 1 1 0 1

    while n>0:
        ans += str(n%2)
        n = n//2

    for i in range(len(ans)):
        if ans[i] == '1':
            print(i, end=' ')
            

10818 - 지능형기차2

#10818
present = 0
station = 0
Max_present = -21e8

for _ in range(10):
    down, up = map(int,input().split())
    predown_present = present - down
    preup_present = present + up

    if predown_present<=0 :
        present = 0
    else:
        present -= down

    if preup_present >= 10000:
        present = 10000
    else:
        present += up

    Max_present = max(present, Max_present)


print(Max_present)

10870 - 피보나치수5

t = int(input())
ans = [0,1]

if t>=2:
    for i in range(2,t+1):
        ans.append(ans[i-2]+ans[i-1])
    print(ans[-1])
else:
    print(ans[t])
t = int(input())

if t == 0:
    print(0)
elif t == 1:
    print(1)
else:
    a, b = 0, 1
    for _ in range(2, t + 1):
        a, b = b, a + b
    print(b)

2309 - 일곱난쟁이

#2309
lst = [int(input()) for _ in range(9)]

flag = True
for i in range(9):
    if flag:
        for j in range(i+1, 9):
            ex_1 = lst[i]
            ex_2 = lst[j]

            if sum(lst) - ex_1 - ex_2 == 100:
                lst.remove(ex_1)
                lst.remove(ex_2)
                flag = False
                break

print(*sorted(lst), sep='\n')

1978 - 소수 찾기

#1978
N = int(input())
arr = list(map(int,input().split()))
ans = 0
for a in arr:
    cnt = 0
    for i in range(1,a+1):
        if a%i == 0:
            cnt +=1
    if cnt == 2:
        ans += 1
print(ans)

1292 - 쉽게 푸는 문제
✔extend와 append의 차이

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # 출력: [1, 2, 3, 4, 5, 6]

list1.append(list2)
print(list1)  # 출력: [1, 2, 3, [4, 5, 6]]
#1292
A,B = map(int,input().split())

def gen_arr(n):
    arr = []
    for i in range(1,n+1):
        arr.extend([i]*i)
    return arr

def get_sum(arr,st,ed):
    return sum(arr[st-1:ed])

a = gen_arr(A+B+1)
b = get_sum(a,A,B)
print(b)

2581 - 소수

#2581
M = int(input())
N = int(input())
ans = []
for i in range(M,N+1):
    cur = 0
    for j in range(1,i+1):
        if i%j == 0:
            cur +=1
    if cur == 2:
        ans.append(i)

if len(ans) == 0:
    print(-1)
else :
    print(sum(ans))
    print(ans[0])

2609 - 최대공약수와 최소공배수

import math
a,b = map(int,input().split())
print(math.gcd(a,b)) #최대공약수
print(math.lcm(a,b)) #최소공배수
profile
공부하면서 알게 된 여러가지 지식을 아카이빙합니다

0개의 댓글