큰 수의 법칙_파이썬 풀이

로선생·2022년 1월 1일
0

코테준비

목록 보기
10/19

내 풀이

요령있는 풀이법의 핵심은 sort정렬해서 큰 수, 두 번째 큰 수 찾아내기

#큰 수의 법칙

# 배열의 크기 N, 숫자가 더해지는 횟수 M, K번 연속 불가

# n, m, k = map(int, input("숫자 입력: ").split())
# data = list(map(int, input("숫자 입력: ").split()))

n, m, k = 5, 8, 3
data = [2, 4, 5, 4, 6]

max = 0
sub_max = 0
result = 0

for i in range(len(data)):
  if data[i] > max:
    max = data[i]

for i in range(len(data)):
  if (data[i] != max) & (data[i] > sub_max): 
    sub_max = data[i]
  
result += max * (m//k*k)
result += sub_max * (m-((m//k*k)))

print(result)

풀이 (1)

# 입력값 중 가장 큰 수와 두 번째로 큰 수를 저장하는 것이 포인트
# 가장 큰 수를 k번 더하고, 두 번째로 큰 수를 한 번 더하는 연산

#포인트2: 입력받은 리스트를 정렬하기!!


# n, m, k = map(int, input("숫자 입력: ").split())
# data = list(map(int, input("숫자 입력: ").split()))

n, m, k = 5, 8, 3
data = [2, 4, 5, 4, 6]


data.sort()
first = data[n-1]
second = data[n-2]

result = 0

while True:
  for i in range(k):
    if m == 0:
      break
    result += first
    m -= 1
  if m == 0:
    break
  result += second
  m -= 1

print(result)

풀이(2) 수열로 접근하기

# 수열로 접근하기

n, m, k = 5, 8, 3
data = [2, 4, 5, 4, 6]

data.sort()
first = data[n-1]
second = data[n-2]

count = 0
count = (m//(k+1)) * k
count += m%(k+1)

result = 0
result += count * first
result += (m - count) * second

print(result)
profile
이제는 이것저것 먹어요

0개의 댓글

관련 채용 정보