lv1 나머지 한 점

Sangwon Jwa·2024년 3월 28일

코딩테스트 연습

목록 보기
7/14
post-thumbnail

❓문제 설명


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

❗제한 조건


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

📌 풀이


  1. 직사각형의 변이 x축, y축에 평행하므로 구하고자 하는 좌표의 x,y 값은 나머지 3개의 좌표의 x,y 값 중 중복되지 않은 숫자이다.
  2. 예를 들어 첫 번째 입력값에서 x 값은 [1,3,3] , y 값은 [4,4,10] 으로 이루어져 있다
  3. x 에서 중복되지 않은 값 1, y 에서 중복되지 않은 값 10 이 우리가 구하고자 하는 좌표 [1,10]이 된다.

<구현>
1. x값과 y값을 모아놓을 배열를 초기화한다.
2. v의 x값과 y값을 차례대로 순회하면서 만약 x 배열에 요소가 없다면 append, 요소가 있다면 (중복이라면) remove 를 수행한다.
3. 결과로 x 배열에는 구하고자 하는 x값이, y 배열에는 구하고자 하는 y값이 있으므로 이 두 배열을 합치면 구하고자 하는 좌표 [x,y]를 구할 수 있다.

def solution(v):    
    x = []
    y = []
    
    for i in range(len(v)):
        if v[i][0] in x:
            x.remove(v[i][0])
            continue
        else:
            x.append(v[i][0])
    
    for i in range(len(v)):
        if v[i][1] in y:
            y.remove(v[i][1])
            continue
        else:
            y.append(v[i][1])
        
    return x + y

0개의 댓글