[BAEKJOON] 10단계_기하: 직사각형과 삼각형 본문

IT/코테문제

[BAEKJOON] 10단계_기하: 직사각형과 삼각형

호랑구야 2023. 10. 31. 09:00

 

julia319 정보

시도했지만 맞지 못한 문제

www.acmicpc.net

 

3009번 네 번째 점

리스트 method를 사용하기 편하려면 X좌표와 Y좌표를 따로 저장해 사용하는것이 훨씬 편했다. 예를 들면 x좌표들 중 갯수가 1개인 것을 확인한다던가 등이 있다.

# x좌표 y좌표를 따로 저장한다.
X = []
Y = []
for _ in range(3):
    x, y = map(int, input().split())
    X.append(x)
    Y.append(y)


for i in range(3):
    # x좌표들 중 갯수가 1개인 요소가 다음 x좌표
    if X.count(X[i]) == 1:
        ansX = X[i]
    # y좌표들 중 갯수가 1개인 요소가 다음 y좌표
    if Y.count(Y[i]) == 1:
        ansY = Y[i]
        
print(ansX, ansY)

 

9063번 대지

점이 여러 개 있을 때, 모든 점을 아우르는 직사각형을 만들기 위해서는 모든 점들 중 가장 작은 x, y와 가장 큰 x, y를 대각선으로 하는 직사각형을 그리면 된다.

N = int(input())

X = []
Y = []
for _ in range(N):
    x, y = map(int, input().split())
    X.append(x)
    Y.append(y)
# 주어진 좌표들 중 가장 작은 x와 y 좌표값을 하나의 점으로
x1 = min(X)
y1 = min(Y)
# 주어진 좌표들 중 가장 큰 x와 y 좌표값을 하나의 점으로
x2 = max(X)
y2 = max(Y)

ans = (y2 - y1) * (x2 -x1)
print(ans)

 

 

14215번 세 막대

선 세개가 있을 경우, 가장 큰 선이 나머지 두 선의 합보다 작으면 삼각형이 만들어진다. 세 선의 합에서 선들 중 가장 큰 것을 빼면 나머지 두 선의 합이 된다.

a, b, c = map(int, input().split())

# 가장 긴 선
Max = max(a, b, c)

# 전체 합에서 가장 긴 선을 뺀 값
# = 짧은 두 선을 더한 값
Sumof2 = a + b + c - Max

if Max < Sumof2:
    ans = a + b + c

else:
    # 짧은 두 선의 합보다 가장 큰 선이 작아야하므로
    # Sumof2 + (Sumof2 - 1)
    #          ^ 원래 길이에서 저만큼으로 줄여서 사용해야 함
    ans = Sumof2 * 2 - 1
    
print(ans)
반응형
Comments