For Programmer
백준 3009번 파이썬 문제풀이(기본수학2 - 네번째 점) 본문
728x90
1. 배열의 count함수를 사용하지 않은 경우(if문 분기)
x1, y1 = map(int, input().split())
x2, y2 = map(int, input().split())
x3, y3 = map(int, input().split())
x4, y4 = 0, 0
# x축
if x1 == x2:
x4 = x3
elif x2 == x3:
x4 = x1
elif x1 == x3:
x4 = x2
# y축
if y1 == y2:
y4 = y3
elif y2 == y3:
y4 = y1
elif y1 == y3:
y4 = y2
print(x4, y4)
-> 간단하게 설명하면 직사각형은 x좌표 2개가 같고 y좌표 2개가 같다. 그 공식을 이용하여 같은 x좌표가 2개 존재한다면 나머지 남은 하나의 값이 정답 x좌표가 되고 똑같이 y좌표에도 적용이 된다.
하지만 count함수를 사용하면 더 깔끔하게 문제를 해결할 수 있다.
xArray = []
yArray = []
for _ in range(3):
x, y = map(int, input().split())
xArray.append(x), yArray.append(y)
for i in range(3):
if xArray.count(xArray[i]) == 1:
resultX = xArray[i]
if yArray.count(yArray[i]) == 1:
resultY = yArray[i]
print(resultX,resultY)
-> 입력받은 x좌표와 y좌표들을 배열에 집어 놓고 배열에서 개수를 세며 한개만 있는 x좌표와 y좌표를 찾아 그값이 정답이 된다.
+ remove 함수를 이용한 해결방법
while True:
array1 = list(map(int,input().split())) #리스트의 형태로 받는다.
if array1.count(0) == 3: #0이 3개이면 반복문 탈출
break
maxNum = max(array1) #제일 큰값을 따로 빼놓는다.
array1.remove(maxNum) #큰값을 배열에서 제거한다.
if maxNum ** 2 == array1[0] ** 2 + array1[1] ** 2: #피타고라스의 방정식이 성립한다면
print("right") #right출력
else: #그렇지않다면
print("wrong") #wrong출력
-> 오름차순이 생각이 나지 않을 때 사용할 수 있는 좋은 방법이다. 제일 큰값을 따로 변수에 저장해놓은 후 최대값만 배열에서 제거해주면 된다.
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 3053번 파이썬 문제풀이(기본수학2 - 택시 기하학) + 소수점 출력 in 파이썬 (0) | 2021.10.04 |
---|---|
백준 4153번 파이썬 문제풀이(기본수학2 - 직각삼각형) (0) | 2021.10.04 |
백준 9020번 파이썬 문제풀이(기본수학2 - 골드바흐의 추측) (0) | 2021.10.03 |
백준 4948번 파이썬 문제풀이(기본수학2 - 베르트랑 공준) - 시간초과 해결 (0) | 2021.10.03 |
백준 1929번 파이썬 문제풀이(기본수학2 - 소수 구하기) (0) | 2021.10.03 |
Comments