티스토리 뷰

안녕하세요!

오늘은 프로그래머스 '더 맵게' 문제를 풀어보았습니다.

 

문제는 아래의 링크를 참고해주세요!

programmers.co.kr/learn/courses/30/lessons/42626

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같

programmers.co.kr

● 문제 간단 설명

주어진 스코빌 지수 리스트 내의 숫자가 모두 일정 수치 이상이 될 때까지 가장 맵지 않은 음식과 그다음으로 맵지 않은 음식 두 가지를 섞고, 마지막에 섞은 횟수를 출력하는 문제입니다.

 

● 문제 해결 방향

저는 리스트 내의 숫자가 일정 수치를 넘을 때까지 계속 진행해야 한다는 점과, 가장 맵지 않은 두 가지 음식을 계산하여 새로운 숫자를 다시 넣어야 한다는 점에 집중해서 문제를 풀었습니다.

 

● 문제 해결 코드

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라는 내장 모듈을 사용하면 통과가 가능하다고 합니다.

일단 제가 스스로 코딩한 부분에 대해서만 설명을 작성하였습니다.

 

이상 프로그래머스 더 맵게 문제 풀이였습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함