본문 바로가기
Data structure & Algorithm/Programmers

[Programmers] 나머지 한 점 (Python)

by LydiaRyu 2022. 10. 8.
반응형

프로그래머스 레벨 1. 나머지 한 점(Python)

 

https://school.programmers.co.kr/learn/courses/18/lessons/1878

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📒 문제 설명

직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다.

제한사항
v는 세 점의 좌표가 들어있는 2차원 배열입니다.
v의 각 원소는 점의 좌표를 나타내며, 좌표는 [x축 좌표, y축 좌표] 순으로 주어집니다.
좌표값은 1 이상 10억 이하의 자연수입니다.
직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 [x축 좌표, y축 좌표] 순으로 담아 return 해주세요.

 

입출력 예시

 

v                                           result
[[1, 4], [3, 4], [3, 10]]            [1, 10]
[[1, 1], [2, 2], [1, 2]]               [2, 1]

 

 

😃 문제 풀이

 

def solution(v):
    answer = []

	# X, Y 각각 좌표를 구분하여 만들기
    X, Y = [], []
    
    for i in range(len(v)):
        X.append(v[i][0])
        Y.append(v[i][1])
    
    # 정렬하여 값이 1개인 경우 찾기
    X.sort(), Y.sort()
    
    # 인덱스 0과 1이 같다면 큰 수가 필요, 같지 않다면 작은 수가 필요
    if X[0] == X[1]:
        answer.append(X[2])
    else:
        answer.append(X[0])
    if Y[0] == Y[1]:
        answer.append(Y[2])
    else:
        answer.append(Y[0])
    

    return answer

 

  • 직사각형의 좌표를 만들기 위해서 X좌표와 Y좌표 각각 2개의 값두 개씩 필요하다는 개념으로 접근했다.
  • X, Y를 정렬하면, 첫 번째 입출력의 예시에서 X좌표가 [1, 3, 3], Y좌표가 [4, 4, 10]로 만들어진다. 
  • 리스트의 0과 1 번째 값을 비교하면 추가해야 할 값을 알 수 있다. 만약, 0과 1이 같으면 뒤의 값을 추가해야 하고, 0과 1이 다르다면 앞의 값을 추가해야 한다.

 

728x90

댓글