평범한 필기장

[BOJ_Python] 20300_서강근육맨 본문

코딩 테스트 준비/BOJ

[BOJ_Python] 20300_서강근육맨

junseok-rh 2023. 3. 21. 13:05

https://www.acmicpc.net/problem/20300

 

20300번: 서강근육맨

PT 첫째 날에 $1$과 $4$를 선택하고, 둘째 날에 $2$와 $3$을 선택하고, 마지막 날에 $5$를 선택하면 $M$은 $5$가 되며, 이때가 $M$이 최소일 때이다.

www.acmicpc.net

내가 생각한 풀이방식

  • 일단 운동기구의 개수가 홀수인지 짝수인지를 나누어서 생각한다
  • 짝수면 근손실 리스트를 오름차순으로 정렬을 하고 1번째와 마지막번째 값을 더한 값, 2번째와 (마지막 -1)번째 값을 더한 값 ,,, 을 구해서 가장 그 중 가장 큰 값이 M
  • 홀수면 1번째와 (마지막-1)번째 값을 더한 값, 2번째와 (마지막-2)번째 값을 더한 값,,,, 그리고 마지막 값을 구해서 그 중 가장 큰 값이 M

내 코드

import sys

n = int(input())
lst = list(map(int, sys.stdin.readline().split()))

lst.sort()

n = len(lst)
if n % 2 == 0:
    cnt = 0
    for i in range(int(n/2)):
        k = lst[i] + lst[n - i - 1]
        if k > cnt:
            cnt = k
    print(cnt)
else:
    cnt = 0
    for i in range(n//2):
        k = lst[i] + lst[n - i - 2]
        if k > cnt:
            cnt = k
    if lst[-1] > cnt:
        cnt = lst[-1]
    print(cnt)

'코딩 테스트 준비 > BOJ' 카테고리의 다른 글

[BOJ_Python] 1080_행렬  (0) 2023.03.23
[BOJ_Python] 21314_민겸 수  (0) 2023.03.22
[BOJ_Python] 11508_2+1 세일  (0) 2023.03.19
[BOJ_Python] 14916_거스름돈  (0) 2023.03.18
[BOJ_Python] 21919_소수 최소 공배수  (0) 2023.03.16