<5086번 : 배수와 약수>
https://www.acmicpc.net/problem/5086
# 조건1 : factor, 조건2 : multiple, 조건3 : neither
while (1) :
A,B = map(int, input().split())
if A==0 and B==0:
break
if B % A == 0:
print('factor')
elif A % B == 0 :
print('multiple')
else:
print('neither')
☆ while(1), while True : 무한 반복문 → 무한 루프를 사용하여 어러 개의 테스트 케이스를 처리할 수 있도록 함.
<2501번 : 약수 구하기>
https://www.acmicpc.net/problem/2501
integer modulo by zero ← 0으로 나누게 될 경우 나타나는 오류
N, K = map(int, input().split())
nums = []
i = 1
# N의 약수 구하기
for i in range(1, N+1):
if N % i == 0 :
nums.append(i) # i를 nums 리스트에 추가
if len(nums) < K :
print(0)
else:
print(nums[K-1])
<9506번 : 약수들의 합>
https://www.acmicpc.net/problem/9506
while True:
n = int(input())
if n == -1:
break;
nums = []
for i in range(1, n):
if n % i == 0:
nums.append(i)
if sum(nums) == n:
print(n,' = '," + ".join(str(i) for i in nums), sep="")
else:
print(n, "is NOT perfect.")
☆ 완전수 제약조건 풀 때 sum()함수 이용!
[join()]
.join(리스트) : 매개변수로 들어온 ['a','b','c']이런 리스트를 'abc'의 문자열로 합쳐서 반환해주는 함수
'구분자'.join(리스트) : 리스트의 값과 값 사이에 '구분자'를 넣어서 하나의 문자열로 합쳐준다.
<1976번 : 소수 찾기>
N = int(input())
nums = list(map(int, input().split()))
cnt = 0 # 소수 갯수
for num in nums:
if num == 1: # 1은 소수가 아님
continue
for x in range(2, num):
if(num % x ==0):
break
else:
cnt +=1
print(cnt)
☆ 주어진 수를 2부터(1은 소수가 아니므로!!)
- nums리스트의 각 숫자 num에 대해 반복
- 2부터 num-1까지의 숫자 x에 대해 num을 x로 나누어 나머지가 0인 경우가 있는지 확인 → 나머지가 0인경우가 있다면 num은 소수가 아니므로 break문을 사용하여 내부 for문을 종료/ 만약 내부 for루프가 끝까지 완료되었다면 (else문 실행) num은 소수 → cnt 1 증가
- else문은 for루프가 break 없이 완료되었을 때 실행 → 이 때 cnt 증가
<2581번 : 소수>
https://www.acmicpc.net/problem/2581
M = int(input())
N = int(input())
sosu = [] # 소수
for num in range(M,N+1): # M이상 N이하
cnt = 0 # 소수가 아니면 카운트
if num > 1: # 2이상의 수들 중에서 소수를 찾는다.
for x in range(2, num): # 2~num에서 나눠지는 수를 찾는다.
if (num % x ==0): # 나머지가 0이면 소수 아님
cnt +=1
break
if cnt == 0: # cnt = 0일 때 : 나눠지는 수가 없을 때! => 소수
sosu.append(num)
if len(sosu) > 0:
print(sum(sosu))
print(min(sosu))
else:
print('-1')
☆ 총합 → sum()함수!!!! / 최솟값 → min()함수!!!!!
<11653번 : 소인수분해>
N = int(input())
i = 2
while N > 1:
if N % i == 0:
N = N // i
print(i)
else:
i += 1
- 소인수분해를 위해 초기 소수 후보 i를 2로 설정
- if절 : N이 i로 나누어 떨어지는지 확인
--> 나누어 떨어지면 N을 i로 나누어 갱신하고 i를 출력
--> 나누어 떨어지지 않으면 i를 증가시켜 다음 소수 후보 확인
'백준' 카테고리의 다른 글
시간 복잡도 (0) | 2024.07.25 |
---|---|
기하 (0) | 2024.07.25 |
일반수학1 (0) | 2024.07.24 |
[BaekJoon/Python3] 백준 10798번 : 세로읽기 (0) | 2024.07.24 |
[BaekJoon/Python3] 백준 2566번 : 최댓값 (0) | 2024.07.24 |