선릉역 1번 출구

baekjoon - 기본 수학2 본문

Algorithm/Algorithm 문제풀이

baekjoon - 기본 수학2

choideu 2021. 8. 18. 20:08

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