https://school.programmers.co.kr/learn/courses/30/lessons/17677
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2018 KAKAO BLIND RECRUITMENT 1차 코딩테스트에 나왔던 문제에서 Counter함수를 쓰면 쉽게 풀리는 문제가 있어 정리해 보았다.
교집합과 합집합의 크기비율을 찾는 문제인데 집합문제임으로 set자료형을 생각하였는데 중복을 허용하였기 때문에 set은 사용할 수 없었다.
위 문제의 경우 &(and) 와 |(or) 연산을 사용하면 쉽게 해결되는 문제였다.
- 기본사용법
'hihello'라는 문자열을 Counter에 넣으면 다음과 같은 출력결과를 보여줌
iterable한 타입(list, dict, set, str, bytes, tuple, range)을 아규먼트로 넣어주면 그 값을 dic처럼 만들어서 Counter객체를 반환해준다.(dict자료형으로 타입 변환을 해주고 dict으로 쓰면된다.)
즉, dict자료형 필요할때 쓰면되는 함수이다.
- 주의사항
1) 매개변수를 다음과 같이 넣을수도있는데, 문자열 a를 넣을때 그냥a = 15 해준다. 이때 a라는 변수가 선언되어있어도 문자열'a' 로 인식하여 다음과같은 결과가 나온다.
2) dict 자료형 특성상 순서가 없음으로 위의 결과는 Counter({'b' : 3, 'a' : 15}) 처럼 나올수도있다(순서를 보장하지 않는다). 원하는 순서대로 보고싶다면 most_common메소드를 사용해보자
이때 매개변수에 c라는 Counter가 key : value 쌍보다 더 많은 수를 넣어도 최대 보여줄 수 있는 값만 보여준다. 위의 예시같은 경우 2)에 첫번째그럼처럼 3개의 값만 출력된다.
- 연산
1) + - 연산이 가능하다. 이때 위와같이 a-b 결과에 b가 0이되면 'b' = 0 이아니라 표시되지않는다.
2) & 와 | 연산이 가능하다(합집합, 교집합)
'Language > python' 카테고리의 다른 글
PS시 유용한 Python 메소드 (0) | 2022.11.26 |
---|---|
itertools 모듈의 product 사용법 (0) | 2022.11.15 |
쉽게 배우는 정규표현식(Python) (0) | 2022.10.27 |