Recent Posts
Tags
- DB
- boostcourse
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- 파이썬
- Machine Learning
- 네이버부스트캠프
- 정보처리기사
- 코딩테스트
- 기초다지기
- python
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 빅분기
- 인공지능기초다지기
- 데이터베이스
- Oracle
- 코딩테스트 python
- AI 플랫폼을 활용한 데이터 분석
- SQL
- 프로그래머스
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- 빅데이터분석기사
- r
- 난생처음 R코딩&데이터 분석 저서
- Ai
- boostcoures
- 오라클
- 이기적
- PY4E
- 부스트코스
- Today
- Total
매일공부
[코딩테스트 python] 최빈값 구하기 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
▲ 저작권 문제로 링크를 통해 확인
from collections import Counter
def solution(array):
length = len(array)
result = [a for a in array if (a>=0 and a<1000)]
if len(result)==length and length>0 and length<100:
cnt = Counter(array)
mode_all = cnt.most_common() # 자동으로 최빈값 순으로 정렬해줌
mode_max = mode_all[0][1] # 그 중에서 가장 처음에 나오는 최빈값만 추출
modes = [n[0] for n in mode_all if n[1] == mode_max] # 그 최빈값이 하나인지 판단
if len(modes) == 1:
answer = modes[0] # 하나일 경우 그 값을 반환
else:
answer = -1 # 여러개인 경우 -1 반환
return answer
Counter의 경우
리스트에 튜플로 최빈값을 함께 반환해 줌
(처음에는 sorted도 생각했지만
빠르게 답이 나와야하는 코테 특성상
시간이 더 걸릴 것 같아서 라이브러리 사용)
마지막 modes에서 반복문을 사용할 필요 없이
첫번째 원소와 두번째 원소를 비교해서 반환하면 더 효율적일 것으로 예상했으나,
list 특성상 원소가 많으면 런타임 에러 발생.
(제한사항을 추가해서 그런 것 같은데, 코테에서는 굳이 제한사랑 조건을 안 해도 되는 걸까...?)
>> 다른 분 하신걸 봤는데
while + enumerate +set 조합이 가장 best 👍
확실히 다양한 내장 함수를 아는 것이 더 중요한 듯!
'Programming > 코딩테스트' 카테고리의 다른 글
[코딩테스트 python] 프로그래머스 탐욕법(Greedy) (0) | 2023.04.11 |
---|---|
[코딩테스트 python] 순서쌍의 개수(약수) (0) | 2023.04.05 |
[코딩테스트 SQL Oracle] null인 경우 값 변경 (0) | 2023.03.28 |
[코딩테스트 python] 짝수 홀수 개수 (0) | 2023.03.28 |
[python 기반] 자료구조와 알고리즘 전체 요약 (0) | 2022.08.14 |
Comments