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
- 머신러닝
- 코드수행
- Python
- 자료구조 및 실습
- MySQL
- test-helper
- 3단계
- 파이썬
- 1단계
- C++
- Object detection
- CS231n
- pytorch
- 그리디
- AWS
- docker
- 전산기초
- 프로그래머스
- STL
- 딥러닝
- 이것이 코딩테스트다 with 파이썬
- SWEA
- ssd
- 2단계
- ubuntu
- 구현
- 실전알고리즘
- cs
- 모두를 위한 딥러닝 강좌 시즌1
- 백준
Archives
- Today
- Total
곰퓨타의 SW 이야기
[프로그래머스 level3 야근지수] 딕셔너리 활용하여 효율성 뿌시기 본문
해결해야하는 문제는 다음과 같았다.
https://programmers.co.kr/learn/courses/30/lessons/12927
코딩테스트 연습 - 야근 지수
회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도
programmers.co.kr
처음에는 다음과 같이 접근하였다.
def solution(n, works):
answer = 0
for _ in range(n):
max_n =max(works)
if max_n==0 :
break
i = works.index(max_n)
works[i] -= 1
for work in works :
answer += work*work
return answer
하지만 이렇게 접근하는 경우, 효율성 문제에서 통과하지 못한다.
효율성을 위해 해시와 같은 딕셔너리 활용을 생각해보았다.
def solution(n, works):
answer = 0
work_dict = {}
for work in works :
if work not in work_dict :
work_dict[work] = 1
else :
work_dict[work] += 1
while n > 0 :
keys = work_dict.keys()
max_n = max(keys)
if n>=work_dict[max_n] :
n -= work_dict[max_n]
if max_n-1<0 :
break
if max_n-1 not in work_dict :
work_dict[max_n-1] = work_dict[max_n]
else :
work_dict[max_n-1]+=work_dict[max_n]
del work_dict[max_n]
else :
work_dict[max_n] -= n
if max_n-1<0 :
break
if max_n-1 not in work_dict :
work_dict[max_n-1] = n
else :
work_dict[max_n-1]+=n
break
keys = work_dict.keys()
for key in keys :
answer += work_dict[key] * (key*key)
return answer
이렇게 해결하였더니 효율성을 통과할 수 있었다 !!
'TIL > 프로그래머스' 카테고리의 다른 글
[프로그래머스 level3 단속카메라] 그리디 활용하기 (0) | 2021.09.24 |
---|---|
[프로그래머스 level3 징검다리 건너기] 이분탐색 활용하기 (0) | 2021.09.23 |
[프로그래머스 level3 멀리 뛰기] 팩토리얼 활용하기 (0) | 2021.09.20 |
[프로그래머스 level3 N-Queen] 백트래킹 알고리즘 활용하기 (0) | 2021.09.12 |
[프로그래머스 level3 경주로 건설] bfs 활용하기 (0) | 2021.09.10 |
Comments