반응형
프로그래머스 레벨 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
'Data structure & Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 짝지어 제거하기 (Python) (0) | 2022.10.10 |
---|---|
[Programmers] 운송 트럭(Python) (0) | 2022.10.09 |
댓글