BOJ - 1246

주의·2024년 1월 11일
0

boj

목록 보기
63/214

백준 문제 링크
온라인 판매

❓접근법

  1. 고객의 가격을 리스트 lst에 넣고, 오름차순으로 정렬한다.
  2. 조건은 다음과 같다.
  • N >= M일 때, i를 0 ~ len(lst)까지, j를 i+1 ~ len(lst)까지 지정해서 서로를 비교해본다.
    만약 lst[j]의 값이 lst[i]의 값보다 크다면,
    m += lst[i] 하고, dic[lst[i]] = m으로 넣어준다.
  • N < M일 때, i를 0 ~ len(lst)까지 지정해 살펴보면서,
    팔 수 있는 달걀의 개수만큼 lst를 살펴본다.
    예를 들어, 팔 수 있는 달걀이 2개, lst = [2,2,5]라면
    [2,2] , [2,5], [5] 이런식으로 살펴보는 것이다.
    그래서 m = len(lst[i:i+N]) * lst[i]로 정하고, dic[lst[i]] = m으로 넣어준다.
    위 예시로 보면 dic[2] = 4, dic[5] = 5인 것이다.
  1. 마지막으로 dic을 살펴보면서 value가 가장 큰 값이면 인덱스와 value를 반환한다. 끝!

👌🏻코드

N,M = map(int, input().split())
lst = []
for _ in range(M):
    lst.append(int(input()))
    
lst = sorted(lst)

dic = {}

if N >= M:
    
    for i in range(len(lst)):
        m = lst[i]        
        
        for j in range(i+1, len(lst)):
            if lst[i] <= lst[j]:
                m += lst[i]
                
        dic[lst[i]] = m    
              
else:
    
    for i in range(len(lst)): 
        m = len(lst[i:i+N]) * lst[i]
        dic[lst[i]] = m

max_index, max_value = 0,0
for index, value in dic.items():
    if value == max(dic.values()):
        max_index, max_value = index, value
        
print(max_index, max_value)

0개의 댓글