switch
[파이썬]백준 38050396번 본문
첫 알고리즘 게시글..
원래는 자바 연습하면서 알고리즘게시판을 쓰려고했는데... 자바 공부할시간이 별로없음
출처-백준
시간이 없어서 백준에서 스샷찍어왔다
이 문제는 2번째 입력한 리스트의
1번 + 2번=(1번+2번) + 3번=(2번+3번) .... ? 아니뭔가 이상함
아무튼 저런식으로 전부 다 더해야한다 3 1 4 3 2 = 3 4 8 11 13 을 더하는 방식 (ㅈㅅ 설명을 잘 못하는듯)
이제 저기서 출력을 최솟값을 구하라고 했음
처음숫자들은 뒷 숫자 갯수만큼 계속 더해질테니까 처음에 작은수를 둬야 최솟값이됨
즉 정렬을 하면된다!
import sys
N = int(sys.stdin.readline())
L = list(map(int,sys.stdin.readline().split()))
> 일단 시간초과날까봐 import sys를 해줘서 sys.stdin.readline으로 입력값을 받는다
L.sort()
L2 = []
A = 0
> 리스트를 정렬하고 (보통 그냥 sort쓰면 시간초과뜨던데 이문제는 잘되길래 걍씀) 다른 리스트를 하나 더 만들고 변수하나를 만들어준다.
for i in L:
A = A+i
L2.append(A)
print(sum(L2))
> 정렬된 리스트 요소를 하나씩 넣어서 이전값(A)와 더해준 뒤 만들어둔 빈 리스트(L2)에 넣어준다음 sum(L2)로 전체합을 구해줌
* 전체코드
import sys
N = int(sys.stdin.readline())
L = list(map(int,sys.stdin.readline().split()))
L.sort()
L2 = []
A = 0
for i in L:
A = A+i
L2.append(A)
print(sum(L2))
'알고리즘문제' 카테고리의 다른 글
프로그래머스 42586번: 기능개발 (0) | 2022.05.31 |
---|---|
백준17478번: 재귀함수가 뭔가요? [python] (0) | 2022.05.23 |
백준1920 수 찾기 [python] (0) | 2022.05.17 |
백준1541 잃어버린 괄호 [python] (0) | 2022.05.10 |
백준 1003번: 피보나치 함수 (0) | 2022.04.30 |
Comments