반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 2월공모주
- 사회조사분석사2급실기신청꿀팁
- 사회조사분석사 2급
- 너비우선탐색
- 현대엔지니어링
- 정렬
- 알고리즘
- 사회조사분석사 2급 필기 공부방법
- 공모주 청약
- DFS
- 시물레이션
- 머신러닝
- 오미크론 자가격리
- 공모주청약
- 사회조사분석사 2급 기출문제집
- 사회조사분석사 2급 필기 시험시간
- 백준
- 사회조사분석사2급실기신청
- 현대엔지니어링 수요예측
- 사이킷런
- 사회조사분석사 2급 필기 요약정리
- 백준 알고리즘
- 사회조사분석사 2급 접수
- BFS
- 사회조사분석사 2급 독학
- 사회조사분석사 2급 공부방법
- 파이썬 정렬
- 그리디
- 벽부수고이동하기 파이썬
- 공모주
Archives
- Today
- Total
세상을 바꾸는 데이터
[프로그래머스] 실패율 - 파이썬 본문
문제 링크:
https://programmers.co.kr/learn/courses/30/lessons/42889
이 문제는 2019 카카오 신입 공채 1차 기출문제, 이코테 기출 25번 문제입니다.
풀이 유형:
구현, 정렬
★문제풀이 Point★
1. O(NlogN)의 시간으로 풀면 통과 가능한 문제
2. 문제에서 주어진대로 구현하면 되는 문제
풀이 과정:
이 문제는 실패율의 정의에 따라서 실수 없이 구현을 잘해주면 되는 문제이다.
시간 제한이 1초, stages의 길이가 200,000이므로 O(NlogN)의 시간으로 정렬을 수행하면 충분하다.
실패율: '스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수' / '스테이지에 도달한 플레이어의 수'
1. 스테이지 번호를 1부터 N까지 증가시키며, 해당 단계에 머물러 있는 플레이어들의 수(count)를 계산한다.
2. 플레이어들의 수(count) 정보를 이용하여 모든 스테이지에 따른 실패율을 계산한 뒤에 배열(answer)에 추가한다.
3. 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호를 출력해야 하므로 lambda 함수를 이용하여 정렬한다.
풀이 코드:
# 실패율
def solution(N, stages):
answer = []
length = len(stages)
# 1부터 N까지 스테이지를 하나씩 살펴보며
for i in range(1, N+1):
# 아직 클리어하지 못한 플레이어의 수 세기
count = stages.count(i)
# 실패율 계산
if length == 0:
fail = 0
else:
fail = count / length
# 다음 스테이지에 도달한 플레이어의 수 계산
length -= count
# 배열에 (스테이지 번호, 실패율) 추가
answer.append((i, fail))
# 실패율 내림차순을 기준으로 정렬
answer = sorted(answer, key=lambda x: x[1], reverse = True)
# 각 스테이지 번호를 실패율의 내림차순으로 정렬
answer = [i[0] for i in answer]
return answer
728x90
반응형
'PS Study > 이코테 문제풀이' 카테고리의 다른 글
[백준 10825번] 국영수 - 파이썬 (61) | 2022.03.02 |
---|---|
[백준 16234번] 인구 이동 - 파이썬 (59) | 2022.02.27 |
[2020 KAKAO BLIND RECRUITMENT] 문자열 압축 - 파이썬 (40) | 2022.02.01 |
[이코테 코드 리뷰] - 구현 예제 및 실전 문제 (9) | 2022.01.26 |
Comments