[백준] 1978, 2581, 11653, 1929, 4948, 9020, 1085, 3009 (파이썬)

Colacan·2022년 1월 21일
1

[백준]

목록 보기
5/43

오늘은 코드스테이츠가 끝난 후 비교적 시간이 남아서 문제를 꽤 많이 풀었다. 이제는 알고리즘 문제에 적응한 느낌도 좀 든다. 단계별 풀어보기는 정렬까지 풀이한 후 다른 과정으로 넘어갈 예정이다.

백준 1978번 소수 찾기

N = int(input())
num = map(int,input().split())
sosu=0
for n in num:
    count = 0
    if n>1:
        for i in range(2,n):
            if n%i ==0:
                count += 1
        if count == 0:
            sosu +=1
print(sosu)

백준 2581번 소수

M = int(input())
N = int(input())
sum=0
min=0
for n in reversed(range(M,N+1)):
    count = 0
    if n>1:
        for i in range(2,n):
            if n%i ==0:
                count += 1
        if count == 0:
            sum +=n
            min = n
if sum==0:
    print(-1)
else:
    print(sum)
    print(min)

백준 11653번 소인수분해

N = int(input())
count = 2 
while N!=1:
    if N%count==0:
        N/=count
        print(count)
    else:
        count+=1

백준 1929번 소수 구하기

# 에라토스테네스의 체 이용
M,N = map(int,input().split())
def prime(num):
    if num==1:
        return False
    else:
        for i in range(2, int(num**0.5)+1): # 특정 숫자의 제곱근까지만 약수의 여부 검증 (더 빠름)
            if num%i==0:
                return False
        return True
for j in range(M,N+1):
    if prime(j)==True:
        print(j)

백준 4948번 베르트랑 공준

'''
#시간초과코드
while True:
    N = int(input())
    if N==0:
        break
    else:
        count=0
        for i in range(N+1,2*N+1):
            if i==1:
                continue
            elif i==2:
                count +=1
                continue
            else:
                for j in range(2, int(i**0.5)+1): #for else문 을 사용하였다.
                    if i%j==0:
                        break
                else:
                    count+=1
        print(count)
'''
def prime(num):
    if num==1:
        return False
    else:
        for i in range(2, int(num**0.5)+1):
            if num%i==0:
                return False
        return True

lst = list(range(2,246912)) # 배열을 미리 만들어 놓는다
prime_lst = [] # 소수만 모아놓은 배열
for i in lst:
    if prime(i):
        prime_lst.append(i)

while True:
    N = int(input())
    if N==0:
        break
    else:
        count = 0
        for j in prime_lst:
            if N< j <=N*2:
                count+=1
        print(count)

백준 9020번 골드바흐의 추측

def prime(num):
    if num==1:
        return False
    else:
        for i in range(2, int(num**0.5)+1):
            if num%i==0:
                return False
        return True
T = int(input())
for i in range(T):
    N = int(input())
    a = N/2
    b = N/2
    while True:
        if prime(a)==True and prime(b)==True:
            print(int(a),int(b))
            break
        else:
            a -= 1
            b += 1

백준 1085번 직사각형에서 탈출

x,y,w,h = map(int,input().split())
print(min(x, y, w-x, h-y))

백준 3009번 네 번째 점

x1,y1 = map(int,input().split())
x2,y2 = map(int,input().split())
x3,y3 = map(int,input().split())
if x1==x2:
    x4=x3
elif x1==x3:
    x4=x2
else:
    x4=x1

if y1==y2:
    y4=y3
elif y1==y3:
    y4=y2
else:
    y4=y1
print(x4,y4)
# 때로는 간단히 생각하는게 이로울 수도
profile
For DE, DA / There is no royal road to learning

0개의 댓글