문제 설명
직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다.
입출력 예
v | result |
[[1, 4], [3, 4], [3, 10]] | [1, 10] |
[[1, 1], [2, 2], [1, 2]] | [2, 1] |
풀이
def solution(v):
answer = []
xArr = []
yArr = []
for i in v:
xArr.append(i[0])
yArr.append(i[1])
for i in range(0,3):
if xArr.count(xArr[i]) == 1:
answer.append(xArr[i])
for i in range(0,3):
if yArr.count(yArr[i]) == 1:
answer.append(yArr[i])
print(answer)
return answer
x축과 y축을 담은 list를 만들고 x축이 담긴 리스트를 돌면서 1개만 있는 x축을 찾아내고
y축도 동일하게 실행 시키고 y축도 찾아서 축을 추가 시켜준다.
반복문을 너무 많이써서 코드 자체가 쓸데 없이 길어진거 같다.
다른사람 풀이
from collections import Counter
def solution(v):
# 총 좌표의 x와 y의 갯수는 같아야한다.
result = []
for i in zip(*v):
y = Counter(i)
result.extend([i for i in y if y[i] == 1])
return result
for i in zip(*v)을 통해 i는 zip()형태로 x축만 가져오고 y축만 묶인다.
-ex
(1,3,3) (4,4,10)
y = Counter(i) 를 통해
Counter(i)를 통해 x축과 y축이 루프를 돌때의 값형식
-ex
Counter({3: 2, 1: 1})
Counter({4: 2, 10: 1})
그중에 value가 1인 값만 체크해서 추가시킨다ion(v):
'CS > 알고리즘' 카테고리의 다른 글
(프로그래머스) 소수 찾기 (0) | 2021.05.08 |
---|---|
(프로그래머스) 더 맵게 (0) | 2021.05.08 |
(알고리즘 공부)기능 개발[파이썬] (0) | 2021.04.19 |
(알고리즘 공부)전화번호 목록 (0) | 2021.03.24 |
(알고리즘 공부)가장 큰 수 (0) | 2021.03.23 |