프로그래머스

[프로그래머스]귤 고르기

진철 2023. 2. 2. 22:11
728x90
반응형

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/138476

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드를 작성하기 위한 순서는 다음과 같다.

1. 해당 감귤이 몇 개 있는지 계산한 후, 리스트에 담아준다.

2. 가장 많은 감귤의 갯수를 더해준 후, k값과 비교하여 answer+1을 해준다.

def solution(k, tangerine):
    answer = 0
    tangerine.sort() #정렬을 해주어 갯수를 구하기 편하게 해준다.
    new=[]
    cnt=1
    for i in range(len(tangerine)):
        if i==len(tangerine)-1: #마지막 원소일 때는 따로 분류하여 리스트에 담아준다.
            new.append([tangerine[i],cnt])
        elif tangerine[i]==tangerine[i+1]:
            cnt+=1
        else:
            new.append([tangerine[i],cnt])
            cnt=1
    new.sort(key=lambda x:x[1], reverse=True) #람다함수를 사용하여 감귤 갯수를 기준으로 내림차순 정렬을 해준다.
    
    total=0
    for i in new:
        total+=i[1]
        answer+=1
        if total>=k: #박스에 k개의 감귤이 모두 담긴 경우이므로 answer를 리턴하여 종료한다.
            return answer
    return answer

감귤의 갯수에 따라서 새로 리스트를 만드는 것이 이번 문제의 핵심이었다.

리스트에서 두 개의 원소를 비교해야할 때, 반복문에서 마지막(첫) 원소를 항상 따로 신경쎠야할 것 같다.

728x90
반응형