■ 백준 5086 배수와 약수_브론즈3
import sys
for x in sys.stdin:
a, b = map(int, x.split())
if a == b == 0:
break
if b%a == 0:
print("factor")
elif a%b == 0:
print("multiple")
else:
print("neither")
■ 백준 5086 약수 구하기_브론즈3
n, k = map(int, input().split())
arr = []
for i in range(1,n+1):
if n%i == 0:
arr.append(i)
print(0 if len(arr)-1 < k-1 else arr[k-1])
# # 고수코드: list에 0을 붙였다.
# # 사실 리스트 컴프리핸션 써서 한줄코딩 하셨는데 내 코드에 맞게 수정했다.
# print((arr+[0]*10000)[k-1])
■ 백준 9506 약수들의 합_브론즈1 (복습)
import sys
for x in sys.stdin:
n = int(x)
if n == -1: break
arr = []
for i in range(1,n+1):
if n%i == 0 and n != i:
arr.append(i)
if sum(arr) != n:
print(f"{n} is NOT perfect.")
else:
print(f"{n} = ", end="")
for i in arr:
print(f"{i}\n" if arr[-1] == i else f"{i} + ", end="")
# # 고수코드: 제곱근을 사용하여 약수 구하는 반복문을 획기적으로 줄임
# # (복습) 약수 구하는 반복문
# import sys
# while True:
# n = int(sys.stdin.readline())
# if n == -1: break
# l = []
# for i in range(2, int(n**(1/2)) + 1):
# if n%i == 0:
# l.extend((i, n//i))
# l.append(1)
# if sum(l) == n:
# l.sort()
# print(n,'=', end=' ')
# print(*l, sep=' + ')
# else:print(f'{n} is NOT perfect.')
■ 백준 1978 소수 찾기_브론즈2
n = int(input())
arr = list(map(int, input().split()))
prime_cnt = n
for i in arr:
if i == 1: prime_cnt -= 1
else:
for j in range(2, int(i**0.5)+1):
if i%j == 0:
prime_cnt -= 1
break
print(prime_cnt)
# #고수코드: continue를 적절히 사용함
# n = int(input())
# arr = list(map(int, input().split()))
# prime_cnt = 0
#
# for i in arr:
# if i == 1: continue
# for j in range(2, int(i**0.5)+1):
# if i%j == 0: break
# else: prime_cnt += 1
# print(prime_cnt)
■ 백준 2581 소수_브론즈2
m = int(input())
n = int(input())
arr = []
for i in range(m, n+1):
if i == 1: continue
for j in range(2, int(i**0.5)+1):
if i%j == 0: break
else: arr.append(i)
print(-1 if arr == [] else f"{sum(arr)}\n{arr[0]}")
# #고수코드: 1부터 n까지 소수 리스트를 먼저 만듦
# # 조금 이해가 안되긴 한다. 왜 내 코드보다 시간이 적게 걸리는지..
# # 내 코드: 56ms / 고수코드: 36ms
# m=int(input())
# n=int(input())
# l=[1]*(n+1)
# l[1]=0
# for i in range(2, int(n**(0.5))+1):
# if l[i]:
# for j in range(i*i, n+1,i):
# l[j]=0
#
# l = [i for i in range(m,n+1) if l[i] == 1]
# if sum(l)==0: print(-1)
# else: print(sum(l), min(l), sep="\n")
■ 백준 11653 소인수분해_브론즈1 (복습)
# 루트를 넘어가는 소인수를 출력하는 방법에서 헤맸는데 머리가 어떻게 된 느낌
n = int(input())
for i in range(2, n+1):
if n < i: break
while n%i == 0:
n //= i
print(i)
# #고수코드: if 조건문...이것만 생각하면 됐는데...
# n = int(input())
# for i in range(2, int(n**0.5)+1):
# while n%i == 0:
# n //= i
# print(i)
# if n!=1: print(n)
'알고리즘 > 백준' 카테고리의 다른 글
백준_단계별로 풀어보기_11단계_시간 복잡도 (0) | 2023.07.06 |
---|---|
백준_단계별로 풀어보기_10단계_기하: 직사각형과 삼각형 (0) | 2023.07.04 |
백준_단계별로 풀어보기_8단계_일반 수학 1 (0) | 2023.06.28 |
백준_단계별로 풀어보기_7단계 2차원 배열 (0) | 2023.06.21 |
백준_단계별로 풀어보기_6단계 심화1 (0) | 2023.06.18 |