programmers.co.kr/learn/courses/18/lessons/1878
알고리즘 문제 해설 - 나머지 한 점
프로그래머스의 모의테스트는 프로그래머스의 시스템에 익숙해지기 위한 테스트이며, 문제 자체는 2018 1ST KAKAO BLIND RECRUITMENT와 전혀 관계없습니다. 다만 모의테스트의 풀이에 대한 요청이 있어
programmers.co.kr
이번 문제를 풀며 또 든 생각은..
파이썬은 정말 무궁무진한 기능이 있다는 것.,,...🥺
문제를 풀기 전..
직사각형의 총 4개의 꼭지점은 x와 y 각각이 2쌍씩 같은 숫자로 이루어 진다고 파악했다.
(아래 주석에 써놨듯, 총 좌표의 x와 y 의 개수를 같게 하면 된다는 뜻임)
따라서 두 쌍을 묶었을 때, 비는 숫자를 찾으면 된다고 생각..!
x, y 좌표를 각각 인덱스로 묶기 위해서는 zip 함수를 활용하면 된다.
zip 함수를 사용하기 전에, 한가지 알아야 할 것이 있다.
지금 주어진 이중 리스트를 벗기려면 *(asterisk)를 활용해야 한다.
배열을 한 꺼풀 벗기고 zip() 적용해야지만
(1, 3, 3) (4, 4, 10) 으로 묶인다.
묶인 함수를 어떻게 할거냐~ 하면
collections 모듈의 Counter 객체를 사용해서 갯수를 파악하면 된다.
(아 그리고, import 할때 스펠링 주의하기! ⛑ collections 이다 ssssss 빼먹지 말것. 필자는 이 오류로 2시간 동안 허튼 시간을 보냄)
import collections
v = [[1, 4], [3, 4], [3, 10]]
def solution(v):
answer = []
# 총 좌표의 x, y의 개수는 같아야한다.
for i in zip(*v):
counted = collections.Counter(i)
print(counted)
answer.extend([i for i in counted if counted[i] == 1])
return answer
print(solution(v))
고로 새롭게 알게 된 것은
1. zip 함수 사용법
2. extend와 append의 차이점
3. collections 모듈의 Counter 객체
이다.
배운 내용을 잊지 않고 또 써먹길....! 👍
'CS > 알고리즘' 카테고리의 다른 글
[프로그래머스] (python) 스킬트리2 (0) | 2021.01.16 |
---|