Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
250x250
Tags
- PY4E
- boostcoures
- 빅데이터분석기사
- python
- r
- boostcourse
- 이기적
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- Oracle
- Ai
- AI 플랫폼을 활용한 데이터 분석
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 파이썬
- 코딩테스트 python
- SQL
- 기초다지기
- 네이버부스트캠프
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 데이터베이스
- 오라클
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- 코딩테스트
- 난생처음 R코딩&데이터 분석 저서
- 빅분기
- 부스트코스
- DB
- 정보처리기사
- 인공지능기초다지기
- Machine Learning
- 프로그래머스
- Today
- Total
매일공부
[코딩테스트 python] 해시 - 완주하지 못한 선수(효율성 개선) 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음 정확도 테스트는 바로 통과!
하지만 효율성에서 전체 실패....
from collections import Counter
def solution(participant, completion):
p_cnt = Counter(participant)
c_cnt = Counter(completion)
answer = [p for p in p_cnt.keys() if (p not in completion) or (c_cnt[p] != p_cnt[p])]
return s for s in answer
일반 for문보단 리스트컴프레션이
빠른 걸로 알고 있지만, 비교하는 과정에서 느려서 그런 듯
고민하다가 결국은 구글링했는데
sort로 정렬해서 풀는 방법도 있었지만,
collections의 Counter가
dict형태로 반환해줘서 sort보다 훨씬 빠름.
기존 코드에서 고민하다가
dict의 items를 보고 바로 해결!
from collections import Counter
def solution(participant, completion):
p_cnt = Counter(participant)
c_cnt = Counter(completion)
for c, n in c_cnt.items():
if c in p_cnt:
p_cnt[c] = p_cnt.get(c) - n
for p, n in p_cnt.items():
if n == 1:
return p
다른사람의 풀이를 보고
Counter는 리스트를 보고 연산이 된다는 사실을 깨달았다...
굳이 이렇게 for문으로 하지 않아도 되는 것..!!

728x90
'Programming > 코딩테스트' 카테고리의 다른 글
[코딩테스트 python] 그리디 Greedy ; 큰수의 법칙 (0) | 2023.04.23 |
---|---|
[코딩테스트] python 주요 라이브러리 정리 (0) | 2023.04.20 |
[코딩테스트 python] 방향이 있는 그래프 순환 구조(DFS) (2) | 2023.04.13 |
[코딩테스트 python] k진수에서 소수 개수 구하기 (2) | 2023.04.12 |
[코딩테스트 python] 프로그래머스 이상한 문자 만들기 (0) | 2023.04.12 |
Comments