본문 바로가기
ⓒⓞⓓⓘⓝⓖⓣⓔⓢⓣ/ⓟⓨⓣⓗⓞⓝ

[python] 단계별로 풀어보기 - 9단계(7~11)

by heaven00 2021. 5. 1.
728x90

 

 

 

지난번에 덜 푼 문제 이어풀기

 

 

 


 

 

9-7) 백준 1085번: 직사각형에서 탈출

 

x,y,w,h = map(int, input().split())
a = []
a.append(x)
a.append(y)
a.append(w-x)
a.append(h-y)

print(min(a))

 

그려진 사각형을 벗어나는 수 중 최솟값을 구하기

 

 

 

 

 

 

9-8) 백준 3009번: 네 번째 점

 

a = []
b = []

for i in range(3):
    x,y = map(int, input().split())
    a.append(x)
    b.append(y)

for i in range(3):
    if a.count(a[i]) ==1:
        x = a[i]
    if b.count(b[i]) ==1:
        y = b[i]

print(x,y)

 

보통 직사각형이 (a,b), (c,d), (a,d), (c,b)로 이루어진다는 점으로 풀이

리스트에 값을 넣고, 갯수를 세서 그 수가 1번밖에 나오지 않으면 그 수가 필요하므로 출력

 

 

 

 

 

 

9-9) 백준 4153번: 직각삼각형

 

a=[]
x,y,z = (map(int, input().split()))
a.append(x)
a.append(y)
a.append(z)

while (x!=0 and y!=0 and z!=0):
    a.sort()
    if a[0]**2 + a[1]**2 == a[2]**2:
        print("right")
    else:
        print("wrong")
    a=[]
    x,y,z = (map(int, input().split()))
    a.append(x)
    a.append(y)
    a.append(z)

 

피타고라스 공식 사용

9-10) 백준 3053번: 택시 기하학

 

import math
a = int(input())

print(round(a*a*math.pi,6))
print(a*a*2)   

 

입력값 a에 대해 우리가 아는 원주율을 사용해 원의 넓이를 구하고 a*a*2를 해준 값 출력

 

 

 

 

 

9-11) 백준 1002번: 터렛

 

T = int(input())

for i in range(T):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    d = (((x1-x2)**2) + ((y1-y2)**2)) **0.5

    if d ==0 and r1 == r2: #두 원이 동심원이고 반지름의 길이 같을 때
        print("-1")
    elif abs(r1-r2) == d or r1 + r2 == d: #내접, 외접일 때
        print("1")
    elif abs(r1-r2)<d < (r1+r2): #두 원이 서로 다른 두 점에서 만날 때
        print("2")
    else:
        print("0")

 

두 원의 교점의 개수를 구하면 해결 가능한 문제

r1 + r2< d: 교점 x

|r1-r2| > d: 교점 x

d = 0 이고, r1 = r2: 교점 무한개(두 원이 완전 일치)

r1 + r2 = d: 교점 1개(외접하는 경우)

|r1-r2| = d: 교점 1 개(내접하는 경우)

r1+r2 < d < r1-r2: 교점 2개

d = (((x1-x2)^2) + ((y1-y2)^2)) ^0.5

위의 방법을 그대로 코딩으로만 옮기면 끝

 

 

 

728x90

댓글