으아,,,
제주도 50일 살이하고 돌아왔다!
그 와중에 파이썬 백준 스터디를 해서 앞에 있는 문제들은 전부 파이썬으로 다시풀었다
그러고 단계별로 하나씩 스터디 진도대로 풀어나가고 있는 중이다 !
그럼 바로 시작하겠다
def prime_list(n): #소수 판독기
n+=1 #n이하의 숫자를 확인해야하므로 !
# 에라토스테네스의 체 초기화: n개 요소에 True 설정(소수로 간주)
primeList = [True] * n
# n의 최대 약수가 sqrt(n) 이하이므로 i=sqrt(n)까지 검사
m = int(n ** 0.5)
for i in range(2, m + 1):
if primeList[i] == True: # i가 소수인 경우 참
for j in range(2*i, n, i): # i이후 i의 배수들을 False 판정
primeList[j] = False
return [i for i in range(2,n) if primeList[i]==True] #소수반환
def total(n):
li = prime_list(n)
idx = max([i for i in range(len(li)) if li[i]<=n/2]) #최댓값 li길이 만큼 for 실행 그런데..n/2이하일경우 최대인 인덱스값 출력
for i in range(idx,-1,-1): #인덱스 이하의 배열 요소 접근
for j in range(i,len(li)): #i이상의 배열 요소 접근
if li[i]+li[j]==n: #합 비교
return [li[i],li[j]] #소수 찾기 성공
test = int(input())
for _ in range(test):
a = int(input())
print(" ".join(map(str,total(a)))) #join으로 나타내주기
함수를 두개짜줬다
첫번째 함수는 에라토스테네스의 체로 소수를 판별해주는 함수이다.
두번째 함수는 첫번째 함수에서 찾은 소수리스트를 가져와서 두개의 합이 입력받은 n값과 동일한 소수 짝을 찾는 함수이다!
그러고 마지막에 join 과 map함수를 활용해서 출력하였다.
for i in range(idx,-1,-1): #인덱스 이하의 배열 요소 접근
이런 방식으로 idx값이 3이라면 3,2,1,0에 내림차순으로 접근할 수 있다 !
print(" ".join(map(str,total(a)))) #join으로 나타내주기
join,map함수를 활용하여 원하는대로 출력할 수 있다 .
x,y,w,h = map(int,input().split()) # x,y,w,h 값 입력받기
print(min(x,y,h-y,w-x))
그냥 최솟값 출력을 하면 된다...!
xList=[]
yList=[]
#x,y리스트받기
for i in range(3):
x,y = map(int,input().split())
xList.append(x)
yList.append(y)
for i in range(3):
if xList.count(xList[i]) == 1: #x 1개인 요소 찾기
x = xList[i]
if yList.count(yList[i]) == 1: #y 1개인 요소 찾기
y = yList[i]
print(f"{x} {y}")
x,y값을 요소별 리스트로 입력 받고
한개있는 값을 찾아 그 각각의 값을 출력하여 평행을 맞춰준다.
#4153
while True :
length = list(map(int,input().split()))
if sum(length)==0:
break
max_len = max(length)
length.remove(max_len) #긴 길이 지우기
if (length[0]**2 + length[1]**2 == max_len**2):
print("right")
else:
print("wrong")
length = list(map(int,input().split()))
이 방식을 통해 리스트도 띄어쓰기로 입력받을 수 있다 !!!
length.remove(max_len) #긴 길이 지우기
remove를 통해 요소를 지움으로서 배열의 인덱스 값을 하나씩 당길 수 있다.
import math
r = int(input())
print(r*r*math.pi)
print(r*r*2)
import math 를 통해 math.pi를 가져올 수 있다.
택시 기하학에서 원은 사각형이다 !
원에 내접하는 !
test = int(input())
for _ in range(test):
x1,y1,r1,x2,y2,r2 = map(int,input().split())
distance = ((x1-x2)**2 +(y1-y2)**2)**(1/2)
maxR=r1+r2
minR=abs(r1-r2)
if distance==0:
if r1 == r2: #원이 겹치는 경우
print(-1)
else : #원이 접하지 않는 경우
print(0)
else:
if distance == maxR or distance == minR:
print(1)
elif distance<maxR and distance > minR: #
print(2)
else : #아예 딴 곳
print(0)
두 원의 반지름길이와 중심사이에 따른 접하는 점의 갯수...
수학을 안한지 너무 오래됐다...바로 생각이 안났다니 ㅋㅋ... 씁쓸...
원 중심이 (x1,y1)이고 반지름이 r1인 C1인 원이 있고
원 중심이 (x2,y2)이고 반지름이 r2인 C2인 원이 있다.
d=두 원의 중심사이의 거리이다.
r1-r2 < d < r1+r2 일 경우
r1+r2 = d or r1-r2=d 일 경우
r1+r1 > d, r1-r2>d 인 경우
중심이 동일할때 반지름이 다른경우 2개
총6가지가 있다!!
까먹지 말자 !