728x90
백준 15596번 문제 풀기
https://www.acmicpc.net/problem/15596
문제 설명
문제
정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오.
작성해야 하는 함수는 다음과 같다.
- Python 2, Python 3, PyPy, PyPy3: def solve(a: list) -> int
- a: 합을 구해야 하는 정수 n개가 저장되어 있는 리스트 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
- 리턴값: a에 포함되어 있는 정수 n개의 합 (정수)
입력
첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다
출력
첫째 줄에 N의 사이클 길이를 출력한다.
알고리즘 및 설명
드디어 함수 파트로 넘어올 수 있었다. 개념들은 사칙연산, 반복문, 배열 등 엄청 쉬운 기초 내용들이었는데 이렇게 하나하나 풀어가는데 오래 걸리다니...! 스스로가 어느 정도의 실력을 갖고 있는지 너무 적나라하게 알아버린 느낌이다.그래서 함수 파트 이후부터는 내 코드가 정답이어도 다른 사람들이 올려둔 코드들과 비교해서 정리해보려고 한다. 그래야 내 실력이 더욱 더 늘 수 있을테니!
내가 구현한 알고리즘은 아래와 같다.
- sunning algorithm (for문 활용)
def solve(a):
ans = 0
for i in range(len(a)):
ans += a[i]
return ans
간단한 문제였기 때문에 for문을 사용하여 간단히 작성이 가능하였다.
하지만 서치해 본 결과 좀 더 간단하게 만들 수 있는 방법이 있었다.
- 새로운 방법 1 (sum 함수 활용)
def solve(a):
ans = sum(a)
return ans
첫 번째 새로운 방법은 sum 함수를 활용하는 것으로 가장 간단하고 빠르다. ans도 생략한다면 바로 return하는 것도 가능하다.
- 새로운 방법 2 (for문 활용)
def solve(a):
ans = 0
for v in a:
ans += v
return ans
두 번째 새로운 방법은 내가 생각한 것과 같이 for문을 이용하는 것인데, 차이점은 나는 for문 구현 시 배열 a의 index를 사용하여 for문을 돌렸고 새로운 방법은 배열 a의 원소들을 사용하였다는 점이다.
효율 측면에서는 비슷할 듯 하나 이 방법이 더 간단하게 코드를 구현할 수 있을 것이다.
728x90
'파이썬(Python) > 백준(Baekjoon) 문제 풀이' 카테고리의 다른 글
[백준, python] 1065번 : 한수(함수) (0) | 2022.03.21 |
---|---|
[백준, python] 4673번 : 셀프 넘버(함수) (0) | 2022.03.20 |
[백준,python] 4344번 : 평균은 넘겠지(1차원 배열) (0) | 2022.03.20 |
[백준, python] 1110번 : 더하기 사이클(while문) (0) | 2022.03.19 |
[백준, python] 10951번 : A+B-4(while문) (0) | 2022.03.19 |