CS/알고리즘

[프로그래머스] (python) 나머지 한 점

모딩 2021. 1. 15. 20:34
반응형

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