네 번째 점(3009번)

PearLine_Zero·2024년 4월 4일

하루에 1커밋 CodingTest

목록 보기
79/110
post-thumbnail
  • 티어 : Bronze 3
  • 정답여부 : 정답
  • 알고리즘 유형 : 구현, 기하학
  • 시간 제한 : 1초

💡문제

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

💡입력

세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.

💡출력

직사각형의 네 번째 점의 좌표를 출력한다.

💡예제 입력 1

5 5
5 7
7 5

💡예제 출력 1

7 7

💡예제 입력 2

30 20
10 10
10 20

💡예제 출력 2

30 10

💡문제요약

주어진 숫자들로 점의 위치는 3가지의 점만 나옴으로 사각형을 만들기 위해서는 1개 점이 모자름 그 1개점 위치를 구하면 되는 문제

💡알고리즘 설계

이런 정사각형 문제는 사실 문제만 보고 어렵다 그래서 그림을 그리다보니 점의 위치가 7,7이 필요하다는걸 느꼈다. 그러다가 규칙을 찾아보니 x, y 입력받은 숫자가 중복이 안되는 숫자를 출력하면 되는 규칙이라는것을 깨달음 ㅎㅎ

  1. 3번동안 숫자들을 N과 M을 입력받음
  2. 그 숫자들을 각각 가로 세로 리스트에 추가
  3. for문을 통해 각각 리스트에 i가 1개만 나온 애를 찾음
  4. 그 숫자를 garoes , seroes 변수에 넣어준 다음 순서대로 출력

💡작성코드

  • python
garo = []
sero = []
for _ in range(3):
    sd = []
    N , M = list(map(int, input().split()))
    garo.append(N)
    sero.append(M)
garoes = 0
seroes = 0 
for i in garo:
    if garo.count(i) == 1:
        garoes = i
for i in sero:
    if sero.count(i) == 1:
        seroes = i     
print(garoes , seroes)

💡틀린 이유 or 수정할 부분

좀더 간단한 코드가 없을까 하고 보니 다들 비슷한거 같아서 조금 나보다 더 간결하게 작성한 코드를 가져옴

💡틀린 부분 수정 or 다른풀이

  • python
x_nums = []
y_nums = []
for _ in range(3):
    x, y = map(int, input().split())
    x_nums.append(x)
    y_nums.append(y)
for i in range(3):
    if x_nums.count(x_nums[i]) == 1:
        x4 = x_nums[i]
    if y_nums.count(y_nums[i]) == 1:
        y4 = y_nums[i]
print(x4, y4)

💡느낀점 or 기억할 정보

수학 문제는 어딘가에 규칙이 있다 그 규칙을 이용하면 코드 구현은 어렵지 않은거 같다 일단 수학문제 그리고 도형이라면 그림을 그려보고 규칙을 찾아볼것!

profile
https://baesaa0304.tistory.com 블로그 이사합니다~

0개의 댓글