코딩테스트/알고리즘 문제풀이

[파이썬] 3009 : 네 번째 점

지과쌤 2021. 7. 27.
반응형

문제

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

입력

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

출력

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

예제 입력 1 복사

5 5

5 7

7 5

예제 출력 1 복사

7 7

예제 입력 2 복사

30 20

10 10

10 20

예제 출력 2 복사

30 10


그냥 직사각형이였다면 모르겠는데, 축에 평행한 직사각형이라고 하니 조건이 굉장히 간단해졌다.

 

축에 평행한 직사각형은

 

    ㅇ    ㅇ

    ㅇ    ㅇ

 

이런식으로, 같은 가로, 세로축의 점들의 가로, 세로 좌표가 같다.

 

위의 네 점을 차례대로 (1,  2), (2, 2), (1, 1), (2, 1) 이라고 하고 각 점의 x좌표와 y좌표를 따로 묶어보면 아래와 같다.

 

(1, 2, 1, 2), (2, 2, 1, 1)

 

x좌표를 보면 1 두개, 2두개

y좌표를 보면 1 두개, 2두개 가 있는걸 볼 수 있다.

 

따라서, 축이 평행한 경우 위와 같은 패턴을 이용하여 코드를 짜면 될 것 같다.


import collections
class Fourth:
    # 축에 평행한 직사각형을 만들기 위해서는
    # 직사각형의 꼭짓점들의 좌표는 x, y값들 각각 n, n, t, t 와 같이 두 값이 각각 2개씩있다.
    # 따라서 입력받은 세 좌표값을 x, y 각각의 묶음으로 놓고, 짝이 없는 수가 남은 네 번째 점의 좌표가 될 것.
    def solve(self, inputXlist, inputYlist):

        #가로, 세로별 특정 좌표별, key value 쌍 만들기
        #key : 좌표, value : 갯수
        xCount = collections.Counter(inputXlist)
        yCount = collections.Counter(inputYlist)

        #value값이 1인 key를 추출하기위해 reverse
        reverse_xCount = dict(map(reversed, xCount.items()))
        reverse_yCount = dict(map(reversed, yCount.items()))

        #value값이 1인 key값 추출
        x = reverse_xCount.get(1)
        y = reverse_yCount.get(1)

        return "{} {}".format(x, y)


if __name__ == "__main__":
    a = Fourth()
    #x좌표, y좌표를 각각 리스트로 전달
    inputXlist = []
    inputYlist = []
    for _ in range(3):
        x, y = map(int, input().split())
        inputXlist.append(x)
        inputYlist.append(y)

    print(a.solve(inputXlist, inputYlist))

 

참고자료

https://seong6496.tistory.com/72

 

Python 딕셔너리 value 값으로 key 값 찾기

딕셔너리는 key : value 값으로 되어있습니다. key값을 넣어주면 value 값이 나오는 구조입니다. 그런데 value 값으로 key 값을 찾아야 할 경우가 종종 생기지만 dict 명령으로는 불러올 수가 없습니다.

seong6496.tistory.com

 

반응형

댓글

💲 추천 글