선릉역 1번 출구
baekjoon - 기본 수학2 본문
1. 1978
cnt = 0 a = int(input()) prime = input().split() prime_ten = [2, 3, 5 ,7] for i in range(a): if int(prime[i]) in prime_ten: cnt += 0 elif int(prime[i]) % 2 == 0: cnt += 1 else: if (int(prime[i])**(1/2)) % 1 == 0: cnt +=1 else: for j in range(2,int(int(prime[i])**(1/2))+1): if int(prime[i]) % j == 0: cnt += 1 break print(len(prime)-cnt) |
#소수를 판별하려면 그 수(n)를 루트(n)까지 나눠보면 된다. 그리고 2로 나눠지는 수는 2를 제외하고 모두 소수가 아니어서 elif case로 빼주었다. 마지막 else문은 루트로 나눠보는 알고리즘이다.
2. 2581
minn = int(input()) max = int(input()) prime = [] for i in range(minn,max+1): if i == 1: prime.append(i) prime.remove(i) elif i % 2 != 0: prime.append(i) for j in range(2, int(i **(1/2))+1): if i % j == 0: prime.remove(i) break elif i == 2: prime.append(i) if len(prime) != 0: print(sum(prime)) print(min(prime)) else: print(-1) |
3. 11653
num = int(input()) d = 2 while d <= num: if num % d == 0: print(d) num = num /d else: d = d + 1 |
#소인수 분해는 매우 중요하니까 이해하고 암기하기
4. 1929
mi, ma = map(int, input().split()) for i in range(mi, ma+1): if i == 1: continue for j in range(2, int(i**(1/2))+1): if i % j == 0: break else: print(i) |
5. 4948
def num(a): if i == 1: return False for j in range(2,int(a**(1/2)+1)): if i % j == 0: return False else: return True //소수 판별 함수 all_ls = list(range(2,246912)) prime_ls = [] for i in all_ls: if num(i): prime_ls.append(i) //주어진 범위 내에서 소수를 미리 찾아서 prime_ls 라는 리스트에 넣어 놓음 while True: cnt = 0 input_num = int(input()) if input_num == 0: break for i in prime_ls: if input_num < i <= input_num*2: //미리 찾은 값 중 주어진 범위 n < ? <= 2n 사이 소수가 있으면 cnt ++ cnt += 1 print(cnt) //출력 |
6. 9020
def num(a): if i == 1: return False for j in range(2,int(a**(1/2)+1)): if i % j == 0: return False else: return True all_ls = list(range(2,10000)) prime_ls = [] for i in all_ls: if num(i): prime_ls.append(i) //위에 문제처럼 미리 리스트 작성 for _ in range(int(input())): gold = int(input()) left = gold // 2 right = gold // 2 for i in range(1, gold): if left in prime_ls and right in prime_ls: break else: left -= 1 right += 1 print(left,right) //차이가 가장 적은 소수 먼저 해야하기 때문에 절반으로 나눈 것 먼저 소수 리스트에 있는지 확인함 |
7. 1085
x, y, w, h = map(int, input().split()) min_x = 0 min_y = 0 if x > w / 2: min_x = w - x else: min_x = x if y > h /2: min_y = h - y else: min_y = y print(min(min_x,min_y)) |
8. 3009
x_s = [] y_s = [] for _ in range(3): x, y = map(int, input().split()) if x in x_s: x_s.remove(x) else: x_s.append(x) if y in y_s: y_s.remove(y) else: y_s.append(y) print(x_s[0],y_s[0]) |
9. 4153
a = list(map(int, input().split())) while sum(a) != 0: max_a = max(a) a.remove(max_a) if max_a**2 == (a[0]**2 + a[1]**2): print("right") else: print("wrong") a = list(map(int, input().split())) |
10. 3053
import math a = int(input()) print(a*a*math.pi) print(float(a*a*2)) |
11. 1002
import math a = int(input()) for _ in range(a): x1, y1, r1, x2, y2, r2 = map(int, input().split()) distance = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) if x1 == x2 and y1 == y2: if r1 == r2: print(-1) else: print(0) else: if r1 > distance + r2 or r2 > distance + r1 or distance > r1 + r2: print(0) elif abs(r1 - r2) == distance or r1 + r2 == distance: print(1) else: print(2) |
'Algorithm > Algorithm 문제풀이' 카테고리의 다른 글
baekjoon - 재귀 (0) | 2021.08.21 |
---|---|
baekjoon - 브루트 포스 (0) | 2021.08.19 |
baekjoon - 기본 수학1 (0) | 2021.08.17 |
baekjoon - 문자열 (0) | 2021.08.17 |
baekjoon - 함수 (0) | 2021.08.17 |
Comments