본문 바로가기
알고리즘 & PS

[Python] 프로그래머스 Lv 1. 나머지 한 점

by 다람이도토리 2021. 4. 20.

프로그래머스 Lv 1. 나머지 한 점 풀이를 통한 배운 내용을 정리한다.

문제는 간단하다. x, y축에 평행한 직사각형의 세 점이 주어질 때, 나머지 한 점이 어디있는지를 찾는 것이 문제이다.

각 x, y값 별로 2개씩 나와야 한다는 것에서 1개만 나온 값을 찾는 것이 목표이다.

 

내가 짠 코드는 다음과 같다.

def solution(v):
    answer = [0, 0]
    x_axis = [0, 0, 0]
    y_axis = [0, 0, 0]
    
    for i in range(0, 3):
        x_axis[i] = v[i][0]
        y_axis[i] = v[i][1]
        
    if x_axis[0] == x_axis[1]:
        answer[0] = x_axis[2]
    else:
        if x_axis[0] == x_axis[2]:
            answer[0] = x_axis[1]
        else:
            answer[0] = x_axis[0]
            
            
    if y_axis[0] == y_axis[1]:
        answer[1] = y_axis[2]
    else:
        if y_axis[0] == y_axis[2]:
            answer[1] = y_axis[1]
        else:
            answer[1] = y_axis[0]


    return answer

아주 단순하게 x, y의 세 값이 같은지 확인하여, 코드를 짰다.

 

그런데, 아예 counter를 세는 방법이 collections으로 존재한다.

import collections
def solution(v):
    answer = []
    for i in (zip(*v)):
        cnt = collections.Counter(i)
        for crd in cnt:
            if cnt[crd] == 1:
                answer.append(crd)
    return answer