티스토리 뷰
안녕하세요!
오늘은 프로그래머스 '더 맵게' 문제를 풀어보았습니다.
문제는 아래의 링크를 참고해주세요!
programmers.co.kr/learn/courses/30/lessons/42626
● 문제 간단 설명
주어진 스코빌 지수 리스트 내의 숫자가 모두 일정 수치 이상이 될 때까지 가장 맵지 않은 음식과 그다음으로 맵지 않은 음식 두 가지를 섞고, 마지막에 섞은 횟수를 출력하는 문제입니다.
● 문제 해결 방향
저는 리스트 내의 숫자가 일정 수치를 넘을 때까지 계속 진행해야 한다는 점과, 가장 맵지 않은 두 가지 음식을 계산하여 새로운 숫자를 다시 넣어야 한다는 점에 집중해서 문제를 풀었습니다.
● 문제 해결 코드
def solution(scoville, K):
answer = 0
scoville.sort()
while scoville[0] < K:
if len(scoville) == 1:
return -1
scoville.sort()
scoville.append(scoville.pop(0) + scoville.pop(0)*2)
answer += 1
return answer
우선 전달받은 리스트를 정렬하여
가장 작은 숫자가 K보다 작을 때 가장 작은 두 수를 리스트에서 제거한 후, 수식에 맞게 계산한 값을 다시 집어넣었습니다.
가장 작은 숫자가 K 보다 크다면 나머지 숫자들은 당연히 이를 만족합니다.
그리고 반복문을 진행하다가 리스트의 길이가 1이 된다면 더 이상 계산을 진행할 수 없기 때문에
-1을 return 해주었습니다.
● 참고
이 코드는 정확성 테스트는 모두 통과하지만 효율성 테스트는 통과하지 못하는 코드입니다...
효율성에 대해 고민하다가 구글링 해보니 heapq라는 내장 모듈을 사용하면 통과가 가능하다고 합니다.
일단 제가 스스로 코딩한 부분에 대해서만 설명을 작성하였습니다.
이상 프로그래머스 더 맵게 문제 풀이였습니다.
'PYTHON' 카테고리의 다른 글
[프로그래머스/PYTHON] 피보나치 수 (0) | 2021.02.02 |
---|---|
[프로그래머스/PYTHON] 소수찾기 (0) | 2021.02.02 |
[프로그래머스/PYTHON] 다트게임 (0) | 2021.01.06 |
[프로그래머스/PYTHON] 전화번호 목록 (1) | 2021.01.05 |
[프로그래머스/PYTHON] 주식 가격 (1) | 2020.12.30 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- bundler
- Vue
- 백준
- 상호평가
- React
- 프로그래머스
- Transpiler
- reactrouter
- redux
- v-for
- Vuex
- clean code
- TypeScript
- SOAP API
- GraphQL
- 파이썬
- Repository Pattern
- programmers
- React.memo
- webpack
- AxiosInterceptor
- 문제풀이
- 알고리즘
- redux-thunk
- error
- Preloading
- python
- js
- SPA
- Vue.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함