일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 혼공
- Brigthics Studio
- 삼성 SDS
- 삼성SDS Brigthics
- 직원 이직률
- 포스코 아카데미
- 캐글
- Brightics
- 삼성 SDS Brigthics
- Brightics Studio
- 데이터 분석
- Brigthics
- 혼공학습단
- 브라이틱스 서포터즈
- 혼공머신
- 모델링
- 데이터분석
- 추천시스템
- 삼성SDS
- 혼공머신러닝딥러닝
- 개인 의료비 예측
- 노코드AI
- Brigthics를 이용한 분석
- 브라이틱스
- Brightics를 이용한 분석
- 팀 분석
- 포스코 청년
- 삼성SDS Brightics
- 직원 이직여부
- 영상제작기
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스] Level 1_실패율 본문
문제 유형
2019 KAKAO BLIND RECRUITMENT
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42889
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 문제풀이
- 분자, 분모 다 0인 경우 0으로 처리해주기
- 딕셔너리 value 값으로 정렬하기
파이썬 딕셔너리 정렬하기
1. sorted를 이용한 정렬 dict 안의 key를 올림차순으로 정렬한 key 리스트를 반환해준다. 이때 key가 아닌 value로 정렬하려면 lambda를 사용해주면 된다. 1-1. value값 기준으로 정렬하기 value값을 기준으로
velog.io
def solution(N, stages):
fail_rate = {}
for i in range(1,N+1):
under, up = 0,0
for j in stages:
if i <= j:
under += 1
if i == j:
up += 1
# 분자, 분모 다 0인 경우 처리해주기
if under == 0 and up == 0:
fail_rate[i] = 0
else:
fail_rate[i] = up/under
fail_ans = sorted(fail_rate.items(), key = lambda x: x[1], reverse = True)
return [fail_ans[i][0] for i in range(len(fail_ans))]
다른 사람의 문제풀이
1)
- result[x]는 value로 정렬
def solution(N, stages):
result = {}
denominator = len(stages)
for stage in range(1, N+1):
if denominator != 0:
count = stages.count(stage)
result[stage] = count / denominator
denominator -= count
else:
result[stage] = 0
return sorted(result, key=lambda x : result[x], reverse=True)
2) get, try-except 문 사용
- try-except문 : 분자,분모 둘 다 0일 경우 처리하는 예외문
def solution(N, stages):
fail = {}
for i in range(1,N+1):
try:
fail_ = len([a for a in stages if a==i])/len([a for a in stages if a>=i])
except:
fail_ = 0
fail[i]=fail_
answer = sorted(fail, key=fail.get, reverse=True)
return answer
3)
def solution(N, stages):
answer = []
fail = []
info = [0] * (N + 2)
for stage in stages:
info[stage] += 1
for i in range(N):
be = sum(info[(i + 1):])
yet = info[i + 1]
if be == 0:
fail.append((str(i + 1), 0))
else:
fail.append((str(i + 1), yet / be))
for item in sorted(fail, key=lambda x: x[1], reverse=True):
answer.append(int(item[0]))
return answer
4) Counter, deque 사용
from collections import Counter
from collections import deque
def solution(N, stages):
# backup = deepcopy(stages)
tmpAnswer = []
sub = len(stages)
result = Counter(stages)
result = list(result.items())
result.sort(key=lambda x: x[0])
for data in result:
currPosPlayer = data[1]
if(data[0]== N+1): # 마지막스테이지 통과한사람이면
continue
tmpAnswer.append([data[0], currPosPlayer / sub])
sub -= currPosPlayer
# tmpAnswer.sort(key=lambda x: x[1], reverse=True)
tmpAnswerDict = dict(tmpAnswer)
dq = deque()
for i in range(1, N + 1):
data = tmpAnswerDict.get(i)
if data == None:
dq.append([i, 0])
continue
dq.append([i, data])
resultAnswer = list(dq)
resultAnswer.sort(key=lambda x: x[1], reverse=True)
answer = []
for i in range(N):
answer.append(resultAnswer[i][0])
return answer
리뷰
- 런타임 에러나는 이유
https://www.acmicpc.net/board/view/22980
글 읽기 - 주로 런타임 에러가 발생하는 이유는 무엇인가요?
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
- 분수 표시
https://longflash.tistory.com/588
[Python 3] 분수 표시 및 분수 연산
Python에서는 fractions 모듈로 분수를 표현할 수 있다. 이 모듈은 표준 라이브러리라 따로 설치할 필요는 없다. 이 모듈은 클래스 Fraction을 정의하므로 이것을 Import하면 된다. Fraction(분자, 분모) 식
longflash.tistory.com
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스] Level 2_프린터(스택/큐) (0) | 2022.09.04 |
---|---|
[프로그래머스] Level2_기능개발(스택/큐) (0) | 2022.09.02 |
[프로그래머스] Level 1_폰켓몬 (0) | 2022.07.17 |
[프로그래머스] Level 1_문자열 내 마음대로 정렬하기 (0) | 2022.07.15 |
[프로그래머스] Level 1_[1차] 비밀지도 (0) | 2022.07.14 |