문제 설명
문제
정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오. 작성해야 하는 함수는 다음과 같다.
a: 합을 구해야 하는 정수 n개가 저장되어 있는 리스트 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
리턴값: a에 포함되어 있는 정수 n개의 합 (정수)
출제 의도
이 문제는 다음과 같은 프로그래밍 능력을 평가합니다.
- 내장 함수 sum()의 존재와 사용법 인지
- 파이썬의 리스트 처리 방식 이해
- 대량의 데이터(최대 3,000,000개의 요소)를 효율적으로 처리할 수 있는 방법 고안
- 시간 복잡도와 공간 복잡도를 고려한 해결책 제시
- 입력값의 범위(0 ≤ a[i] ≤ 1,000,000)를 고려한 해결책 제시
정답 코드
모법 답안
def solve(a):
return sum(a)
파이썬에서 이 문제를 푸는 가장 간단한 방법은 내장 함수 sum()을 사용하는 것입니다. sum(a)는 리스트 a의 모든 요소들의 합을 계산합니다. sum() 함수는 C로 구현되어 있어 대량의 데이터를 빠르게 처리할 수 있습니다. 또한 이 방법은 주어진 조건(0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)을 모두 만족시킵니다.
추가 풀이1
def solve(a):
total = 0
for num in a:
total += num
return total
이 방법도 동일한 결과를 제공하지만, sum() 함수보다는 약간 느립니다. 스터디를 위해 로직 플로우 차트를 그려 함수를 이해해 봅니다.
추가 풀이 1 (로직 플로우 차트)
- 함수가 시작되면 total 변수를 0으로 초기화합니다.
- 리스트 a에 요소가 남아있는지 확인합니다.
- 요소가 있다면, 다음 요소를 num으로 가져옵니다.
- total에 num을 더합니다.
- 2-4 단계를 리스트의 모든 요소에 대해 반복합니다.
- 리스트의 모든 요소를 처리했다면, 최종 total 값을 반환합니다.
- 함수가 종료됩니다.
'알고리즘' 카테고리의 다른 글
[백준] 1991번 트리 순회 - Python (0) | 2024.09.22 |
---|---|
[백준] 11654번 아스키 코드 - Python3 (0) | 2024.09.07 |
[백준] 2562번 최댓값 - Python3 (0) | 2024.09.07 |
[백준] 2739번 구구단 - Python3 (0) | 2024.09.06 |
[백준] 9498번 시험성적 - Python3 (2) | 2024.09.06 |