본문 바로가기
알고리즘/백준-Python

[Python]백준 3009번: 네 번째 점

by sweesweet 2021. 11. 26.

https://www.acmicpc.net/problem/3009

 

3009번: 네 번째 점

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

www.acmicpc.net

생각 보다 쉬웠는데 에러먹어서 어쩌다 2가지 방향으로 코드를 짰다.

둘다 리스트를 이용하는 건 동일하다.

꼭지점에 해당하는 세 점이 입력이 되면 남은 하나를 찾아주는 그런 내용인데, 다들 같은 숫자가 2개씩있는 반면, 남은 하나에 해당하는 숫자만 1개씩만 카운트 된다. 그걸 이용해서 코드를 짰다.

 

1번째코드

li=[]
lis=[]
for i in range(3):
    (x,y)=map(int,input().split())
    if x in li:
        li.remove(x)
    else:
        li.append(x)
    if y in lis:
        lis.remove(y)
    else:
        lis.append(y)
print(li[0],lis[0])

첨 짰던 코드가 틀렸다 나와서 다시짠 코드다.

x,y를 입력 받고, 만약 리스트에 그 값이 있다면 앞의 리스트값을 제거하는 경우다. 

이렇게 되면 어차피 1개씩 밖에 안남기때문에 print(li[0],lis[0])  하면 된다

 

2번째코드

li=[]
lis=[]
for i in range(3):
    x,y=map(int,input().split())
    li.append(x)
    lis.append(y)
for i in range(3):
    if li.count(li[i])==1:
        x=li[i]
    if lis.count(lis[i])==1:
        y=lis[i]
print(x,y)

흐름은 비슷한데 여기선 다 추가해놓고 갯수를 셌을 때 1개인 것만 출력 하는 경우다.

원래 if에서 그냥 출력을 때렸는데 생각해보니까 갯수가 1개인 값이 y축값이 더 먼저나오게 되면 반대로 뒤집히기 때문에 반드시 대입이 필요했다ㅠ

 

걸리는 시간은 첫 번째가 68ms, 두 번째가 64ms가 나온다